<?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>233030</bug_id>
          
          <creation_ts>2021-11-12 00:26:52 -0800</creation_ts>
          <short_desc>Distinguish contiguous SharedBuffer from non-contiguous one and guarantee immutability</short_desc>
          <delta_ts>2022-05-30 15:03:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=170956</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233363</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233511</see_also>
          <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>233401</dependson>
    
    <dependson>233411</dependson>
    
    <dependson>233481</dependson>
          <blocked>232424</blocked>
    
    <blocked>233441</blocked>
    
    <blocked>233442</blocked>
    
    <blocked>233677</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>achristensen</cc>
    
    <cc>aestes</cc>
    
    <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>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</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>sam</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>1814361</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-12 00:26:52 -0800</bug_when>
    <thetext>SharedBuffer have some const methods, yet they do not guarantee immutability of the object when called.

Calling some methods like data() which is defined as:
const uint8_t* data() const;

will actually combine all DataSegment into one
Same for const method combineIntoOneSegment().

SharedBuffer:m_segments shouldn&apos;t be mutable.

What we could have instead is a SharedBuffer base class with a ContiguousSharedBuffer inheriting from it. data() would only be available with ContiguousSharedBuffer.

SharedBuffer would have a makeContiguous() const returning a ContiguousSharedBuffer (or itself if already contiguous)

This would ease tasks such as bug 232424, and guaranteeing immutability would allow for multi-threaded use necessary for doing rdar://84517825.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814362</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-12 00:27:08 -0800</bug_when>
    <thetext>&lt;rdar://problem/85333814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815689</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-16 15:34:34 -0800</bug_when>
    <thetext>I like that idea.

Analogous with StringBuilder and String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815806</commentid>
    <comment_count>3</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-16 20:30:51 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; I like that idea.
&gt; 
&gt; Analogous with StringBuilder and String.

I hesitated with going with a SharedBufferWriter ; but the changes required are more invasive.

Turned out, that 90% of the SharedBuffer use in webkit are actually only ever made of a single DataSegment.
The remaining are all related to networking and receiving the data in chunk.

Such SharedBuffer are ultimately always flatten into a contiguous one at the end of its lifecycle, either because they are transferred over IPC, or because the underneath code (such as images) needs a plain buffer.

Could revisit the approach you mention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815833</commentid>
    <comment_count>4</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-16 23:12:41 -0800</bug_when>
    <thetext>On second thought, yeah, I see how it can be done easily on top of my current changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815975</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-17 09:41:51 -0800</bug_when>
    <thetext>In case this is helpful, some more thoughts:

I’m not insisting that you stick so close to the StringBuilder concept, but I do think it’s a really similar relationship. We made String immutable (I did this a long time ago, originally it was not!). It’s possible that we will find that SharedBuffer &quot;builders&quot; could be longer lived than the StringBuilder ever is, though. On the other hand, I don’t see how you &quot;share&quot; something when it’s being mutated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816408</commentid>
    <comment_count>6</comment_count>
      <attachid>444667</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-18 06:44:22 -0800</bug_when>
    <thetext>Created attachment 444667
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816788</commentid>
    <comment_count>7</comment_count>
      <attachid>444794</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-19 02:08:00 -0800</bug_when>
    <thetext>Created attachment 444794
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817185</commentid>
    <comment_count>8</comment_count>
      <attachid>444924</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-21 05:22:34 -0800</bug_when>
    <thetext>Created attachment 444924
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817186</commentid>
    <comment_count>9</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-21 05:31:41 -0800</bug_when>
    <thetext>this patch contains the lot: split ContiguousSharedBuffer from SharedBuffer where data() and the various methods requiring a flat/contiguous SharedBuffer are now only available on ContiguousSharedBuffer

Introduce SharedBufferBuilder to create a SharedBuilder the latter now being fully immutable with the exception of takeData which checks if there&apos;s only a single ref. though this will likely go away, as the extractData operation isn&apos;t atomic and as much not thread-safe.

I made most used of SharedBuffer that were only ever used with a single DataSegment a ContiguousSharedBuffer.
SharedBuffer that always ended being flatten are now made contiguous when no more buffers would be added to a SharedBuffer.

Places that only needed a single conversion to a contiguous buffer are now created at the point of use using makeContiguous

I will be splitting this patch in two:
one with contiguous buffer only
the other with the SharedBufferBuilder

this ended up being a much bigger effort than expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817187</commentid>
    <comment_count>10</comment_count>
      <attachid>444925</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-21 05:37:48 -0800</bug_when>
    <thetext>Created attachment 444925
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817219</commentid>
    <comment_count>11</comment_count>
      <attachid>444935</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-21 18:41:33 -0800</bug_when>
    <thetext>Created attachment 444935
WIP Combined Patch for EWS

Fix gtk/windows compilation, handle case where creation of SharedBuffer with a CFData* results in an empty buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817222</commentid>
    <comment_count>12</comment_count>
      <attachid>444936</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-21 19:03:35 -0800</bug_when>
    <thetext>Created attachment 444936
WIP Combined Patch for EWS

gstreamer fixes, more gtk/windows fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817253</commentid>
    <comment_count>13</comment_count>
      <attachid>444951</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 02:16:04 -0800</bug_when>
    <thetext>Created attachment 444951
WIP Combined Patch for EWS

more gstreamer and gtk/windows fixes, fix RangeResponseGenerator, fix ScriptBufferSourceProvider : need further thought to StringView not owning its content and to keep alive the flatten SharedBuffer without temporarily doubling memory usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817383</commentid>
    <comment_count>14</comment_count>
      <attachid>444997</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 20:46:30 -0800</bug_when>
    <thetext>Created attachment 444997
WIP ContiguousSharedBuffer for EWS

More Windows and gstreamer compilation fixes. Fix API test now that call to data() doesn&apos;t modify the SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817384</commentid>
    <comment_count>15</comment_count>
      <attachid>444998</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 21:14:55 -0800</bug_when>
    <thetext>Created attachment 444998
WIP ContiguousSharedBuffer for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817385</commentid>
    <comment_count>16</comment_count>
      <attachid>444999</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 21:18:25 -0800</bug_when>
    <thetext>Created attachment 444999
WIP ContiguousSharedBuffer for EWS

rebase2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817387</commentid>
    <comment_count>17</comment_count>
      <attachid>445000</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 21:39:43 -0800</bug_when>
    <thetext>Created attachment 445000
WIP ContiguousSharedBuffer for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817390</commentid>
    <comment_count>18</comment_count>
      <attachid>445002</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 21:47:11 -0800</bug_when>
    <thetext>Created attachment 445002
WIP ContiguousSharedBuffer for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817391</commentid>
    <comment_count>19</comment_count>
      <attachid>445003</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 22:01:07 -0800</bug_when>
    <thetext>Created attachment 445003
WIP ContiguousSharedBuffer for EWS

yet more gstreamer compilation fix, need a build machine really</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817395</commentid>
    <comment_count>20</comment_count>
      <attachid>445005</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-22 23:04:02 -0800</bug_when>
    <thetext>Created attachment 445005
WIP ContiguousSharedBuffer for EWS

iOS sim, SharedBufferWin compilation fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817402</commentid>
    <comment_count>21</comment_count>
      <attachid>445008</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 00:05:11 -0800</bug_when>
    <thetext>Created attachment 445008
WIP ContiguousSharedBuffer for EWS

Windows compilation fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817406</commentid>
    <comment_count>22</comment_count>
      <attachid>445011</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 00:28:37 -0800</bug_when>
    <thetext>Created attachment 445011
WIP ContiguousSharedBuffer for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817420</commentid>
    <comment_count>23</comment_count>
      <attachid>445018</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 01:20:06 -0800</bug_when>
    <thetext>Created attachment 445018
WIP ContiguousSharedBuffer for EWS

Windows JPEG decoder compilation fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817434</commentid>
    <comment_count>24</comment_count>
      <attachid>445022</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 03:41:58 -0800</bug_when>
    <thetext>Created attachment 445022
WIP ContiguousSharedBuffer for EWS

Fix windows wpe crash, hopefully make gtk finally compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817505</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-23 12:41:41 -0800</bug_when>
    <thetext>I&apos;m sorry I didn&apos;t have time to check this, I can check the gtk/wpe build and attach additional fixes here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817515</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-11-23 14:08:41 -0800</bug_when>
    <thetext>GTK/WPE fixes http://sprunge.us/vmcu7f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817525</commentid>
    <comment_count>27</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 15:18:31 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #26)
&gt; GTK/WPE fixes http://sprunge.us/vmcu7f

Thanks !

was taking me forever with only one error reported at a time :)

I believe some makeContiguous() are unnecessary as the original buffer already is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817547</commentid>
    <comment_count>28</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 19:43:01 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #26)
&gt; GTK/WPE fixes http://sprunge.us/vmcu7f

When doing things like:
&gt;          // FIXME: ideally we would encode the content as a stream without having to fetch it all.
&gt; -        auto* data = resource.data-&gt;data();
&gt; +        auto* data = resource.data-&gt;makeContiguous()-&gt;data();

data would be a dangling pointer once the expression is evaluated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817549</commentid>
    <comment_count>29</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-23 20:05:07 -0800</bug_when>
    <thetext>I wonder if such an incorrect use should warrant data() to make
data() &amp;&amp; = delete

It&apos;s going to be quite painful for some use, but that would be an easy mistake 

or have data return an object that is refcounted itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817615</commentid>
    <comment_count>30</comment_count>
      <attachid>445087</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-24 04:50:36 -0800</bug_when>
    <thetext>Created attachment 445087
WIP ContiguousSharedBuffer for EWS

wpe and gtk fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817625</commentid>
    <comment_count>31</comment_count>
      <attachid>445091</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-24 05:45:23 -0800</bug_when>
    <thetext>Created attachment 445091
WIP ContiguousSharedBuffer for EWS

last gtk fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817629</commentid>
    <comment_count>32</comment_count>
      <attachid>445095</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-24 06:03:52 -0800</bug_when>
    <thetext>Created attachment 445095
WIP ContiguousSharedBuffer for EWS

uploaded wrong stack of patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817630</commentid>
    <comment_count>33</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-11-24 06:04:45 -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>1817918</commentid>
    <comment_count>34</comment_count>
      <attachid>445179</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-26 00:51:27 -0800</bug_when>
    <thetext>Created attachment 445179
WIP ContiguousSharedBuffer for EWS

final preliminary version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817919</commentid>
    <comment_count>35</comment_count>
      <attachid>445180</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-26 00:54:52 -0800</bug_when>
    <thetext>Created attachment 445180
ContiguousSharedBuffer for EWS

final preliminary version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817920</commentid>
    <comment_count>36</comment_count>
      <attachid>445181</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-26 00:56:04 -0800</bug_when>
    <thetext>Created attachment 445181
ContiguousSharedBuffer for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818258</commentid>
    <comment_count>37</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-29 09:54:20 -0800</bug_when>
    <thetext>This is a great idea.

One thing I don’t like about this change is that the simpler case, the contiguous buffer, has the longer name. I would call the contiguous immutable one by the shorter name and rename the more complex mutable one that supports segments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818523</commentid>
    <comment_count>38</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-29 16:03:18 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #37)
&gt; This is a great idea.
&gt; 
&gt; One thing I don’t like about this change is that the simpler case, the
&gt; contiguous buffer, has the longer name. I would call the contiguous
&gt; immutable one by the shorter name and rename the more complex mutable one
&gt; that supports segments.

After bug 233442 (introducing SharedBufferBuilder), neither will be mutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818545</commentid>
    <comment_count>39</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-29 16:53:46 -0800</bug_when>
    <thetext>What about SharedBuffer which by default is a contiguous one and is the base class.

And CompositeSharedBuffer ?

there will be a need to reshuffle the logic a bit as there&apos;s a lot of place in the code that are expecting a SharedBuffer as base class. Would make the change even more massive.

Probably would be simpler still to have CompositeSharedBuffer be the base class and SharedBuffer inherit from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818777</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-30 09:14:39 -0800</bug_when>
    <thetext>I guess we can do the renames as mechanical steps later. I’d like to make sure the most-commonly-used class has the shortest name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819054</commentid>
    <comment_count>41</comment_count>
      <attachid>445502</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 19:23:36 -0800</bug_when>
    <thetext>Created attachment 445502
Patch

rebase following bug 233471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819057</commentid>
    <comment_count>42</comment_count>
      <attachid>445504</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 19:33:51 -0800</bug_when>
    <thetext>Created attachment 445504
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819062</commentid>
    <comment_count>43</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 20:17:38 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #40)
&gt; I guess we can do the renames as mechanical steps later. I’d like to make
&gt; sure the most-commonly-used class has the shortest name.

I will be taking this in a follow-up patch. That will make review more readable. Will land all three patches at once.

So I believe the patch as-is, is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819064</commentid>
    <comment_count>44</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 20:23:06 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #40)
&gt; I guess we can do the renames as mechanical steps later. I’d like to make
&gt; sure the most-commonly-used class has the shortest name.

FWIW, there are 440 use of SharedBuffer left vs 422 of ContiguousSharedBuffer :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819177</commentid>
    <comment_count>45</comment_count>
      <attachid>445551</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 04:27:04 -0800</bug_when>
    <thetext>Created attachment 445551
Patch for EWS

Fix gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819180</commentid>
    <comment_count>46</comment_count>
      <attachid>445553</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 04:28:18 -0800</bug_when>
    <thetext>Created attachment 445553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819183</commentid>
    <comment_count>47</comment_count>
      <attachid>445555</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-01 04:29:49 -0800</bug_when>
    <thetext>Created attachment 445555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819648</commentid>
    <comment_count>48</comment_count>
      <attachid>445704</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:06:29 -0800</bug_when>
    <thetext>Created attachment 445704
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819651</commentid>
    <comment_count>49</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 04:18:16 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #44)
&gt; (In reply to Darin Adler from comment #40)
&gt; &gt; I guess we can do the renames as mechanical steps later. I’d like to make
&gt; &gt; sure the most-commonly-used class has the shortest name.
&gt; 
&gt; FWIW, there are 440 use of SharedBuffer left vs 422 of
&gt; ContiguousSharedBuffer :)

Miscalculated:
there are 608 ContiguousSharedBuffer in use following this patch, and 1077 SharedBuffer.

Not doubt there&apos;s much more SharedBuffer that could be made into contiguous ones permanently. But I&apos;m not sure the contiguous SharedBuffer will be the most commonly used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820361</commentid>
    <comment_count>50</comment_count>
      <attachid>445918</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 16:56:00 -0800</bug_when>
    <thetext>Created attachment 445918
Patch

Simplify ContiguousSharedBuffer::createCFData() on non-Fundation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820418</commentid>
    <comment_count>51</comment_count>
      <attachid>445948</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 20:11:41 -0800</bug_when>
    <thetext>Created attachment 445948
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820434</commentid>
    <comment_count>52</comment_count>
      <attachid>445960</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 22:32:59 -0800</bug_when>
    <thetext>Created attachment 445960
Patch

fix win crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820439</commentid>
    <comment_count>53</comment_count>
      <attachid>445963</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 23:55:43 -0800</bug_when>
    <thetext>Created attachment 445963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820440</commentid>
    <comment_count>54</comment_count>
      <attachid>445964</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 23:57:23 -0800</bug_when>
    <thetext>Created attachment 445964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820519</commentid>
    <comment_count>55</comment_count>
      <attachid>445993</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 21:21:47 -0800</bug_when>
    <thetext>Created attachment 445993
Patch

Fix SharedBufferPOSIX.cpp, it&apos;s not compiled by any of our bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820776</commentid>
    <comment_count>56</comment_count>
      <attachid>445993</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-06 14:32:55 -0800</bug_when>
    <thetext>Comment on attachment 445993
Patch

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

&gt; Source/WebCore/ChangeLog:32
&gt; +        There&apos;s a potential increase of temporary memory usage with the
&gt; +        ScriptBufferSourceProvider class; bug 233511 is tracking it.

Presumably this is a small enough amount of additional memory that it’s OK and we don’t have &quot;unshippable&quot; WebKit until it’s done.

&gt; Source/WebCore/platform/SharedBuffer.cpp:102
&gt; +    if (m_segments.size() == 1)
&gt; +        return ContiguousSharedBuffer::create(m_segments[0].segment.copyRef());

Isn’t this less efficient than just returning a pointer to the first segment in this case? How common is this likely to be?

There’s a new failure mode in the new design where the same shared buffer repeatedly is converted into a ContiguousSharedBuffer. What guarantees that won’t happen.

&gt; Source/WebCore/platform/SharedBuffer.cpp:172
&gt; +size_t SharedBuffer::size() const
&gt; +{
&gt; +    return m_size;
&gt; +}
&gt; +
&gt; +bool SharedBuffer::isEmpty() const
&gt; +{
&gt; +    return !size();
&gt; +}
&gt; +
&gt; +bool SharedBuffer::isContiguous() const
&gt; +{
&gt; +    return m_contiguous;
&gt; +}

Should any of these go in the header instead as inlines?

&gt; Source/WebCore/platform/SharedBuffer.cpp:226
&gt; +void SharedBuffer::append(const char* data, size_t length)
&gt; +{
&gt; +    append(reinterpret_cast&lt;const uint8_t*&gt;(data), length);
&gt; +}

Should this go in the header instead as an inline?

&gt; Source/WebCore/platform/SharedBuffer.cpp:349
&gt;  bool SharedBuffer::hasOneSegment() const
&gt;  {
&gt; -    auto it = begin();
&gt; -    return it != end() &amp;&amp; ++it == end();
&gt; +    return m_segments.size() == 1;
&gt;  }

Should this go in the header instead as an inline?

&gt; Source/WebCore/platform/SharedBuffer.cpp:412
&gt; +const char* ContiguousSharedBuffer::dataAsCharPtr() const
&gt; +{
&gt; +    return reinterpret_cast&lt;const char*&gt;(data());
&gt; +}

Should this go in the header instead as an inline?

&gt; Source/WebCore/platform/SharedBuffer.cpp:544
&gt; +const char* SharedBufferDataView::dataAsCharPtr() const
&gt; +{
&gt; +    return reinterpret_cast&lt;const char*&gt;(data());
&gt; +}

Should this go in the header instead as an inline?

&gt; Source/WebCore/platform/SharedBuffer.h:79
&gt; +    static Ref&lt;DataSegment&gt; create(Vector&lt;uint8_t&gt;&amp;&amp; data)
&gt; +    {
&gt; +        data.shrinkToFit();
&gt; +        return adoptRef(*new DataSegment(WTFMove(data)));
&gt; +    }

For future reference/refactoring:

Functions like these probably should not be inlined in the header. It makes the code bigger at each call site if there is more than one, and the constructors themselves can often get inlined in these create functions if they are moved out of the header file, even if the constructors aren’t explicitly marked inline.

Same for the other create functions.

&gt; Source/WebCore/platform/SharedBuffer.h:140
&gt; +#if !USE(FOUNDATION)
&gt; +    friend class ContiguousSharedBuffer; // For createCFData
&gt; +#endif

Do we really need the #if here?

&gt; Source/WebCore/platform/SharedBuffer.h:281
&gt; +    // Ensure that you can&apos;t call append on a ContiguousSharedBuffer directly.
&gt; +    // When called from the base class, it will assert.
&gt; +    template &lt;typename... Args&gt;
&gt; +    void append(Args&amp;&amp;...) = delete;

Is there an alternate version of this design that doesn’t have the Liskov Substitutability Principle problem?

&gt; Source/WebCore/platform/SharedBuffer.h:283
&gt; +    WEBCORE_EXPORT const uint8_t *data() const;

Misplaced &quot;*&quot; here.

&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:77
&gt; +        data = API::Data::createWithoutCopying((const unsigned char*)contiguousBuffer-&gt;data(), contiguousBuffer-&gt;size(), releaseSharedBuffer, contiguousBuffer.ptr());

This typecast is not needed, that’s already the correct type.

&gt; Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp:284
&gt; +    RefPtr&lt;ContiguousSharedBuffer&gt; buffer = handle.tryWrapInSharedBuffer();

I suggest auto here.

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:569
&gt; +    RefPtr&lt;ContiguousSharedBuffer&gt; buffer = frame.editor().dataSelectionForPasteboard(pasteboardType);

I suggest auto here.

&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:-235
&gt; -#if HAVE(UIKIT_WEBKIT_INTERNALS)
&gt; -    return mode == HTMLMediaElementEnums::VideoFullscreenModeStandard;
&gt; -#else
&gt;      return true;
&gt; -#endif

This seems like an unrelated change that was included in this patch by accident?

&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:242
&gt; -#if PLATFORM(IOS_FAMILY) &amp;&amp; !HAVE(UIKIT_WEBKIT_INTERNALS)
&gt; +#if PLATFORM(IOS_FAMILY)

Ditto.

&gt; Source/WebKitLegacy/mac/WebView/WebHTMLRepresentation.mm:233
&gt; +        auto *parsedArchiveData = [_private-&gt;dataSource _documentLoader]-&gt;parsedArchiveData();

This should be just auto or auto*, not &quot;auto *&quot;.

&gt; Source/WebKitLegacy/mac/WebView/WebResource.mm:167
&gt; -    NSData *data = nil;
&gt; +
&gt; +    RetainPtr&lt;NSData&gt; data;

Good fix! I was prepping for createNSData and spotted this error, and was about to ask you to fix it, but looks like you spotted it too.

&gt; Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:46
&gt; +    RefPtr&lt;SharedBuffer&gt; buffer = ContiguousSharedBuffer::createWithContentsOfFile(String(&quot;not_existing_file&quot;));

Would more auto make these better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820853</commentid>
    <comment_count>57</comment_count>
      <attachid>445993</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 18:57:17 -0800</bug_when>
    <thetext>Comment on attachment 445993
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:32
&gt;&gt; +        ScriptBufferSourceProvider class; bug 233511 is tracking it.
&gt; 
&gt; Presumably this is a small enough amount of additional memory that it’s OK and we don’t have &quot;unshippable&quot; WebKit until it’s done.

Here we have a trade-off between speed and memory efficiency. I would need to discuss with others on what we want to achieve here.

We could always flatten the buffer before storing it into a ScriptBufferSourceProvider

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:102
&gt;&gt; +        return ContiguousSharedBuffer::create(m_segments[0].segment.copyRef());
&gt; 
&gt; Isn’t this less efficient than just returning a pointer to the first segment in this case? How common is this likely to be?
&gt; 
&gt; There’s a new failure mode in the new design where the same shared buffer repeatedly is converted into a ContiguousSharedBuffer. What guarantees that won’t happen.

&gt; Isn’t this less efficient than just returning a pointer to the first segment in this case? How common is this likely to be?
I made the constructor private to keep with the existing style, forcing to go through the create method.
I don&apos;t see how this would be less efficient, we just explicitly create the object rather than the let the compiler decides what to do.

&gt; There’s a new failure mode in the new design where the same shared buffer repeatedly is converted into a ContiguousSharedBuffer
In practice it shouldn&apos;t happen. A buffer is either flattened when we read its content like when dealing with external framework that requires a pointer and this is done once.
Where multiple conversions could occur on the same object, this is where I tracked where the SharedBuffer was first created and made it a ContiguousSharedBuffer instead.

There&apos;s no guarantee in the future that it won&apos;t happen though. However, after bug 233442 and 233677 , I believe the naming gives more visibility of what is happening and how to do the &quot;right thing&quot; will be more obvious to folks.

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:172
&gt;&gt; +}
&gt; 
&gt; Should any of these go in the header instead as inlines?

it&apos;s a bit confusing on which is to be made inline vs which one we don&apos;t want to. The issue however is with WEBCORE_EXPORT which can&apos;t be used on the class if there are inlines.

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:79
&gt;&gt; +    }
&gt; 
&gt; For future reference/refactoring:
&gt; 
&gt; Functions like these probably should not be inlined in the header. It makes the code bigger at each call site if there is more than one, and the constructors themselves can often get inlined in these create functions if they are moved out of the header file, even if the constructors aren’t explicitly marked inline.
&gt; 
&gt; Same for the other create functions.

I&apos;ll move those to the code then.

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:140
&gt;&gt; +#endif
&gt; 
&gt; Do we really need the #if here?

no. but it&apos;s the only place it&apos;s needed. I&apos;ll remove it.

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:281
&gt;&gt; +    void append(Args&amp;&amp;...) = delete;
&gt; 
&gt; Is there an alternate version of this design that doesn’t have the Liskov Substitutability Principle problem?

This pattern disappear following bug 233442, append no longer exists.

This was primarily used as a WIP where most SharedBuffer instances where converted to ContiguousSharedBuffer and could tell at compile time where it was misused. Easier to spot than waiting on an assertion during a test.

&gt;&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:-235
&gt;&gt; -#endif
&gt; 
&gt; This seems like an unrelated change that was included in this patch by accident?

oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820854</commentid>
    <comment_count>58</comment_count>
      <attachid>445993</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 18:59:08 -0800</bug_when>
    <thetext>Comment on attachment 445993
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:46
&gt;&gt; +    RefPtr&lt;SharedBuffer&gt; buffer = ContiguousSharedBuffer::createWithContentsOfFile(String(&quot;not_existing_file&quot;));
&gt; 
&gt; Would more auto make these better?

probably, I mostly kept the existing code as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820881</commentid>
    <comment_count>59</comment_count>
      <attachid>446118</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 21:44:09 -0800</bug_when>
    <thetext>Created attachment 446118
Patch

apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820899</commentid>
    <comment_count>60</comment_count>
      <attachid>446125</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 22:24:41 -0800</bug_when>
    <thetext>Created attachment 446125
Patch

apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820904</commentid>
    <comment_count>61</comment_count>
      <attachid>446127</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 23:08:40 -0800</bug_when>
    <thetext>Created attachment 446127
Patch

pick some fly-by fixes from bug 233442 requires for this patch to not cause regressions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822082</commentid>
    <comment_count>62</comment_count>
      <attachid>446525</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 05:17:57 -0800</bug_when>
    <thetext>Created attachment 446525
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822087</commentid>
    <comment_count>63</comment_count>
      <attachid>446529</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 05:46:01 -0800</bug_when>
    <thetext>Created attachment 446529
Patch

Fix compilation error following rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822976</commentid>
    <comment_count>64</comment_count>
      <attachid>446812</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-10 14:19:51 -0800</bug_when>
    <thetext>Created attachment 446812
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823184</commentid>
    <comment_count>65</comment_count>
      <attachid>446870</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 03:58:32 -0800</bug_when>
    <thetext>Created attachment 446870
Patch

Rebase, convert new code to ContiguousSharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823188</commentid>
    <comment_count>66</comment_count>
      <attachid>446874</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 05:12:04 -0800</bug_when>
    <thetext>Created attachment 446874
Patch

Fix compilation on iOS, GTK and Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823192</commentid>
    <comment_count>67</comment_count>
      <attachid>446877</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-11 05:40:01 -0800</bug_when>
    <thetext>Created attachment 446877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823309</commentid>
    <comment_count>68</comment_count>
      <attachid>446929</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 03:50:13 -0800</bug_when>
    <thetext>Created attachment 446929
Patch

Yet another rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823388</commentid>
    <comment_count>69</comment_count>
      <attachid>446966</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-12 21:54:47 -0800</bug_when>
    <thetext>Created attachment 446966
Patch

Fix intermittent crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823422</commentid>
    <comment_count>70</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 00:31:42 -0800</bug_when>
    <thetext>Committed r286937 (245163@main): &lt;https://commits.webkit.org/245163@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446966.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872829</commentid>
    <comment_count>71</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-05-30 15:03:37 -0700</bug_when>
    <thetext>Filed: Bug 241110 – REGRESSION(245163@main) Can&apos;t load a very large image as an image document</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444667</attachid>
            <date>2021-11-18 06:44:22 -0800</date>
            <delta_ts>2021-11-19 02:07:55 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233030-20211119014419.patch</filename>
            <type>text/plain</type>
            <size>397293</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FjZjI1YTI4NjNiZWE4
ZTBlMjQ0ZGMyMDZhNTQ5NDBkNDZmZjZkYi4uZTQ3YWEwZTA2MzZjYmY1Yjg2ZDllMDRjYWQ1YzEw
ZjQxYjg2ZDY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyOSBAQAorMjAyMS0xMS0xOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWF2ZW5hcmRAZ21haWwuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVh
bWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJv
dmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVs
ZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBw
ZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0Rh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWRE
YXRhIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hl
ZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWlu
UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRy
eVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToK
KyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAg
KC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpz
aXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6
cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNl
c3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3Jl
YXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
bzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9u
OjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1h
dGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5
cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1h
dGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRD
b3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lz
dHJhdGlvbkxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rh
c2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBl
ZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQp
OgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9u
c2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoK
KyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTA5LTA3
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVjb2Rpbmcg
d2VibSBmaWxlIHdpdGggbW9yZSB0aGFuIDIgY2hhbm5lbHMgd2lsbCBmYWlsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGE2MWQ1MTE2ODcxNDIxM2EyYmVjY2I4MGUyNWZhYTBhMzNkNDEwZmQuLjgyMWU0ZThkMTk2ZmM3
YzU2ODA0OWI1ZTM1YzdiNjgyMDEyZGE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ0IEBACisy
MDIxLTExLTE4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YXZlbmFyZEBnbWFpbC5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZl
dGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpi
dWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29k
ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERh
dGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0
RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAg
ICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAg
IChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdo
dDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9z
ZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNl
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRl
SXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
U3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTEtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlZWxFdmVudERlbHRhRmlsdGVyOjpzaG91bGRBcHBs
eUZpbHRlcmluZ0ZvckV2ZW50IGNhbiBiZSBhIHN0YXRpYyBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDY0NzZmNGJjZjhhMGJhMDJkY2Y3YjY1ZjJhOTRkZDUxOGZlZWI4
ZTkuLjAwOGM2NDE1NGM2YmY1YzdlNThmNTBiZWM5NTQxNzA4ZjRmYmRhZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMS0xOCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWF2ZW5hcmRAZ21haWwuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJ
bWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRh
dGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNl
IGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAg
ICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0wNiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBlbXB0eSBkaXJl
Y3RvcmllcyBmcm9tIGZyb20gc3ZuLndlYmtpdC5vcmcgcmVwb3NpdG9yeSBhcyBvZiByMjg1MzU3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4
IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEz
Mjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRp
emVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9k
YXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0
aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6
Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4
Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0g
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVz
dWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5
cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRl
eCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2Uz
OTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5
cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwg
Y29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlv
biA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJ
bWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVw
cmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6
QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3
OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAg
ICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNp
emUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAppbmRleCA5MDk4ZTA1YWY0Yzg0MzNiM2QxM2IzOTU2NTA2NGE5YzE1NDMz
ODdkLi44Njc1MGRmZWVmZWM1NTVjYWY5YTFiYmY4NTEwNjBhNTlhZmYyODkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZv
aWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3Qg
cmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29y
ZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNw
b25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRh
c2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFu
ZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUo
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTgsMTUgKzI5OCwxNSBAQCB2
b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAg
ICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXIt
PmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkp
OworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29y
ZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8
RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBF
eGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERP
TUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYg
cmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiBy
ZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRP
TU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBy
ZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE3LDcgKzMx
Nyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVz
cG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRP
cGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQp
KTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBp
bmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYg
KHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNw
b25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25z
ZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9u
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtl
UGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTM4Miw5ICszODIsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwg
Y2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhp
cy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEp
IH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2Nk
OWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZv
aWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZl
dGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJp
ZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3
MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYo
KTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0
dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25z
ZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07
CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29u
c3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEz
NDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3
LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hl
ZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9u
cyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0
aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9k
eSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShj
b25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRl
eCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0
NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMu
aHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAt
MTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAg
ICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShr
aWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmlu
ZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJi
Zjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJj
NWE2ZTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGlj
IGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGIpCiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBs
ZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3Rk
OjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwog
fQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJ
ZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgr
K107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRh
dGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0
LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZl
cikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNi
MS4uZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZl
dGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewog
ICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVy
KCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShw
cm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBj
b250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIs
NyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkg
Y29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8
Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1
bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9
IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAg
IGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRh
dGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAg
ICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9k
eSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
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
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5
ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjFiY2I1OTM2ZjY5MTBkZDQyMTU3NDlkYjI2N2Zk
MzE1MmExOWRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9k
eUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5jbGVhcigpOwogICAgIHJlc2V0Q29uc3VtZVByb21p
c2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygp
OwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBp
ZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0g
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBl
LCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBl
LCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBj
bwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9y
bURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAo
YXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0
LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMy
NCwxNiArMzI2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXIt
PmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9
CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQoreworICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICByZXR1cm4g
bV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDUsOCBAQCBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkK
ICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFy
cmF5QnVmZmVyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpOworICAgIHJldHVy
biBidWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtMzUxLDcgKzM1NCw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOworICAgIGF1dG8gYnVmZmVy
ID0gbV9idWZmZXIudGFrZSgpOwogICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOwogfQpAQCAtMzYyLDggKzM2NSw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVs
bHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAt
Mzg0LDggKzM4Nyw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0
Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNl
KTsKICAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpOworICAgICAgICBtX3NvdXJj
ZS0+ZW5xdWV1ZShidWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmlu
ZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjRmMjg4ZGY0OGQ5
NTk4YjU0ZmVjNWVlODExNjM1ZmUyMDgxYWUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAg
IHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZN
b3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAg
ICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CkBAIC04Miw3
ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250
ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29u
c3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
PiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1ZDQ1MmNl
Mjg4Y2VkYzAyOTMyZDkzOTZmNjQ2MDA0NmU0NmJkNTM2Li5lNGU5MDhmMmJjOWEwNjgzMGU2NGJh
YzVkMzEwMGM4ODBhYjdjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6
OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFj
ayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygm
Y2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRC
b2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4K
ICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNG
b3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkK
ICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3Vt
ZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGJjNTg1NGY5Yjk2NmZiNjMyOWQxNmZkZTYxOGNj
ZWIxZDhjOTRjYTkuLmExNjA3NDdkZTBjZWFjZWVjYzc3OGQxZmY3YjVmYjJhZTBlYTE4M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lk
IGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAg
dXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9y
bURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBj
b25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2
NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDky
YTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hs
aWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8
IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVh
YmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYz
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWlu
dDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmls
ZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250
aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1
YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9Owog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBr
ZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwog
CkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFw
cGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwg
Y29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3
MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgK
QEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURh
dGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwog
Ym9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2
YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIy
NzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcg
KzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElE
Qk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hh
bmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBh
dXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAg
ICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0
b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0
ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURC
S2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBp
biBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNl
Il9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewog
ICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRl
eEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hl
Y2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywx
MyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVj
b3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5
VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhL
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4
IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAg
IGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBp
ZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRv
IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFu
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNo
ZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNr
IGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAh
PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNh
Y3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBk
YXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFz
ZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBh
IHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3Mg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qg
c3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRv
IGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAg
IGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBA
IC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtl
eVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElE
QktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcg
KzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1Zh
bGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlw
ZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4
IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsK
QEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRD
b3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkg
PyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwor
ICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAg
ICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0
byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11
bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNv
dW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2
MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5
ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3
IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAo
bG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAg
Ym9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5l
Y2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0
ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRF
X09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8g
cHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggYWZlZjQzMjhjNmFjMjBiNmE0NjIxZmRlOGM0
ZmRlZTYyYjk2N2FhMy4uMDAyNzU3MDgwMmIxNGIwOWQxYWEwNGZjZjQ3YzU4MDljMDljMWEwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2
b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNS
ZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdN
ZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZp
ZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRp
ZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xl
YXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBm
MjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4
YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAg
ICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dp
dGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAg
ICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkg
ewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAg
ICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRl
eCAwNmI2NDA2MjdlZDZhODcxZjY3NWNmNjU2Y2NjYmRiNWIyMTgzMmQ5Li40YTE3MTgxNjNhZjc3
NzkyODYxYWRlOGVjYmFiZjBiOTc3OTBkMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGF0
YSgpIGNvbnN0CiAgICAgaWYgKCFtX2RhdGFDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gbV9kYXRhOworICAgIHJldHVybiBtX2RhdGEuZ2V0KCk7CiB9CiAK
IFJlZlB0cjxNb2RlbD4gSFRNTE1vZGVsRWxlbWVudDo6bW9kZWwoKSBjb25zdApAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYg
dXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgIG1fZGF0YS5jbGVhcigpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBp
ZiAobV9yZXNvdXJjZSkgewpAQCAtMTU3LDggKzE1Nyw2IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVu
dDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fcmVzb3VyY2Ug
PSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiB9
CkBAIC0yMDYsOCArMjA0LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpA
QCAtMjIxLDcgKzIxOCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAg
IGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5jbGVhcigpOwogCiAgICAgICAgIGludmFsaWRhdGVS
ZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIzMCw3ICsyMjcsNyBAQCB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1
ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSgqbV9kYXRhLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUoKm1fZGF0
YS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52
YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
aW5kZXggMzVkMzdjOTA1MDJiYzAwYTU3YzY3NDk4N2U5N2I0NzllOGMxZGQzNS4uZWFiZmNmNDFk
NTczYTI2NTY1ODI3NDM3YzZhN2I1YzNhNmYwODI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC05OSw3
ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAg
IFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3Jl
YWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCmluZGV4IDZjYzJmMjVjMTVkMzgwYzU1YmE4MTg1MDBkYTRiZjJmYzc2
Y2FmMjMuLmY0NTQ5OTYzZDg4ZmQ0OWJmYmE0ZmFhNmUyNjFhMGMxMjQ2ZWRkZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnRDb2NvYS5tbQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OmNyZWF0ZUZpbGUoKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRhLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS5nZXQoKS0+c2l6ZSgpKTsKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGMxYTcxZWUwNmQ1MmMxZDM4OWQzM2UwNmFkOGRlMzEwNDBiM2I4OWYuLjM0ZGIzOGRl
N2U2YTFkMmFiNzFmYjE0ZjNmZTBjNGJhYmQyNDYwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBz
dGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0
YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRl
RE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAg
IH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1
Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmY1ZDcyODUzYWExZmRmMjVjZDMzNTBlZmEy
YjhjMGY1MTY3NTkwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1f
Y29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25s
eUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29u
dGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFz
aGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAg
ICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAg
ICAgICByZXR1cm4geyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
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
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGM2NzEwMjI3ZGRkMTRmNTA2ZDhmNTIwYzBlODk2Y2M5
Y2Q0ZTY5ZGIuLjQ1ODFmMWE4N2YzZWU1N2Y0MDExY2UwYWY2MTVmNjdkNzU0OWEyNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjQsNyArNDEyNCw3IEBAIFByb21pc2VkQXR0
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
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDE2NDc2
NmRjMzI1Mzc1ZTdlYjFmOGE3NWRiYWNkNDIyMjEzMGZkN2QuLmRmODg5ZTRlYTdlMzYwNjFiOWRk
ZDk4ZDVmY2JjNDRjOGU3ZDlmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzY0NWNmMjkxMTNjM2E3YjhiOTMy
N2VjNWNkYWM4MjBjZTUzMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02Myw4ICs2NCw4IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAg
aWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgICAg
IHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBu
dWxscHRyOworICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPmdldCgpLT5zaXplKCk7Cisg
ICAgICAgIG1fZGF0YUJ1ZmZlci0+Y2xlYXIoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVu
dCgpKSB7CkBAIC04MSwzNiArODIsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgp
OwogfQogCitib29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEo
KSBjb25zdAoreworICAgIHJldHVybiAhbV9kYXRhQnVmZmVyLT5pc051bGwoKTsKK30KKwogc2l6
ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7
CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlm
ICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQo
KSk7CiAKLSAgICBzaXplX3QgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAg
IGF1dG8gYnVmZmVyID0gbV9kYXRhQnVmZmVyLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29k
ZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVu
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2
NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9
CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5z
aXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2
ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kNzRlZTEwOTMzZDdlZTRlNWY3ZWY5YjdjNDA5MDlmZTk3ZDA3
YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBj
bGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNl
VGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAg
ICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRp
bWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksNyAr
MTIxLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAg
ICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVy
OworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwog
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRS
ZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApp
bmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUx
Nzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0x
NDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNv
dXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBl
KCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNl
KCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFs
c2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAg
ICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4
ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEw
MywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250
ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNl
NjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNv
bnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
IH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0
YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0
RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
c2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEy
ZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6
OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAg
IGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0g
ICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNl
QnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVu
dC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGlj
IGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYw
MzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2
ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0
ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9y
aWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRv
IGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0s
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDA2N2Y0MTNmNWMxODkyYzUzZDkzY2UyOThhZjdhMDgwM2M2NGNlYTIu
LjllNGYzYTU0ODczNmM0M2U1YWUxOWEwZTBkZWIwYWMyZDc3MDAyYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwNCwxMSArMTYwNCwxMSBAQCBib29s
IERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVS
ZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNl
KCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgp
OwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBt
X3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygp
OwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAog
ICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNv
dXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29t
bWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCku
c2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OCw3ICsxNjQ4LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1
YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Miw3ICsyMjUy
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21t
aXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwg
cmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDRmYmZkNzEyMDE5OWQyN2NmYTg3YmRkNTk2NzM3MTA2YmNlMDhk
YjAuLjM0ZjhiYWQzMjkyYWRjOWU1MTJiZDljNjEzMGQ4MGYzNjQ5N2M0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0
YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjcsNyArMjI4LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4m
Jik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNTk4LDcgKzU5OSw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUwNGIzN2Y4MmJiNmNjMDg1
Yjg3OTIwZjlkMTZlYzE0MGFhYTFlOGYuLmFiYmY5Y2FlZTI4MGVjZjRjMjM5MzBmOTMxMzVmOGQy
Y2QxYzFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5
Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3lu
Y2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVy
ID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CmluZGV4IDUxN2NkYjBhNDllM2ZjNjg0NjI0MjkwZmU5NWVkZGIwMzMwYzEyZDIuLmFjODBkMjYz
N2RhM2Q5MzQwZGVmODA4Mzc5N2ViOWI2MDRhNGEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9p
ZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikg
ZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2Vz
KFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2Iu
LjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRp
YWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1h
cCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEp
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVy
ID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVu
dCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkp
OwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAg
aWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5
bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlz
LCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25z
LCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAg
ICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCBy
ZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
KCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwK
ICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5h
dGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlr
ZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRm
NGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5
YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2
ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5k
aWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBG
ZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29u
c3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2
ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29u
c3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0
ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2Fk
UmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMy
MzUuLjI2ZGYyZjZhZjJlMjZmNjRiMzg1ZDQ4Mzk3NGRiNDY5NTRhZDM0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVf
QUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNl
TG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9u
cyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9h
ZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jl
c291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAg
LCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJz
TG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJz
TG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzEx
OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9p
ZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1f
cmVzb3VyY2VEYXRhLT5jbGVhcigpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VS
ZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpz
ZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCArMzM1LDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNo
YXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291
cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNl
KQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKwogICAgIGlmIChidWZmZXIpCiAg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAg
ICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKK1NoYXJlZEJ1ZmZl
ciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xl
YXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CiB9CiAK
IGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcx
LDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0
aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFw
cGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBs
b2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENh
bGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nh
c3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0
YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZk
MmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uNDA2NTAxZWU1MzE1YTg2ODYx
MWVlY2UyNmMxOTQ2OTU1ZTFlNzkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1l
OwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVz
b3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHBy
b3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAg
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURh
dGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAg
IHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJy
ZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9y
ZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggN2Q3ODIyZTI0OTI4MTZjNmU4NjZiN2U1Yjc4ODMxMTA2MzdiMWRkZi4uNzA4NGFlMDQ3ODFl
MTUwOTdiNzAwYmU3ODc1M2IyNTJkOWViOTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VE
YXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0
YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4
NzkuLmUxMTBiZDEyOWE4NzkyNjUyYWY2ODM1MWUwZGMyOWYwMDAyMGNlZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDIyICszNywyNCBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KG1fZGF0YS5nZXQoKS5yZWxlYXNlTm9uTnVsbCgpKTsgfQorICAgIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5n
dGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmNsZWFyKCk7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92
ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCi0gICAgICAg
ICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgeworICAgICAgICBtX2RhdGEuYXBwZW5kKGRh
dGEpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5
MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRv
IG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwg
bV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAg
IC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1Qi
IHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4K
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFO
SUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNh
YWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1z
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8g
bm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBj
YWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9k
aWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQog
Ci1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFw
cGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAg
ICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJj
ZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBv
ciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0
aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRo
ZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3Vy
Y2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsK
ICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3Qs
IHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBj
b3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4
ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBj
bGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAg
Ym9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdj
M2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUz
YjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRj
NzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRh
dGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYTgxZjJk
MzRjNDllYzg3NTFjMGE5NWZhZGJkNWY4NmUwNzQ2MGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAg
IH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAg
LTg3OCw3ICs4NzgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2Ug
dGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3Vu
dAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsK
IAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
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
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYx
YTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAo
ZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZh
N2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhl
MDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0
cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWlt
ZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAg
ICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAg
YW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwx
MSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1
bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJl
Z2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5k
ZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2
YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250Ojpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRG
b250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBA
QCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAg
ICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJv
b2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQor
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJv
ck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFw
cGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5
dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAh
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIg
PyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24p
IDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNr
Tm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
cjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVk
Rm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250
TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmlu
ZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2
MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGls
bE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29s
JiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJv
bUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRm
b3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwg
Ym9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5z
dXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgog
ICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2Rl
MDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMw
NTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFn
ZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNy
ZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNo
b3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRl
SW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpj
b252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlm
ICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7
CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9z
dFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygp
OwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0
U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0
UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBv
c3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0
ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0
MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1
LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVy
KiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRV
cGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0
MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5
OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hp
bGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9s
aWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAg
ICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3Jl
bWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAg
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50
YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1
dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkp
IHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5k
YXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShR
VUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEw
NWUyYjRjN2Q3NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXIm
IG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIp
OworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRC
dWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMy
NzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcg
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
MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5l
dyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9k
b2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9u
c2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2Rv
Y3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIy
MzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5
OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsK
IAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkp
OwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9
CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5h
bFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0
U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9j
b252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2
MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRm
MDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJl
SW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVk
Rm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250
OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNW
R0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNv
bnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4
ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgs
MTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRT
Y3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVl
YjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEy
YTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2so
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMx
NzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEw
ICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAog
CiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
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
ICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYy
YzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5mYWRlZjA1MmVmMjMxMjJkMjYzMTIxOWYx
NzJmOWNhOTA5NTQ0NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTk3LDcg
Kzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhN2IwMmUwYWViOWFjMTVmMThjYzE4ODcwNDAx
Y2Q1MDAyNWY2ZWNiLi41M2Q1ZWFhOGY0MDc4ZDZhM2VmOWFlZTMxMTc1NjE2ZjYzNGFjNDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NDQsNyArMTk0NCw3IEBAIGNvbnN0IFN0cmluZyYgUGFn
ZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4g
d2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8v
IHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNh
bGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVu
LgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAt
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
b2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLmUz
ZjY3MjllMjA2ZjQyNWVlNjBkNDI0Y2E2MWVmNmQ5OGM5NTVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
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
UExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMzI4LDcgKzMyOSw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29j
b2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNv
Y29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlm
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRl
eCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4
Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3Rv
cjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAog
ewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25W
ZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8
IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsK
ICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVu
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJu
IGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4
YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNj
ZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAg
dm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29k
ZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5
ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICsz
MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBw
dWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNl
bGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXgg
OGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUw
NjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAt
NTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3Ry
aW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
ICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5T
dHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAg
ICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmlu
ZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUw
NDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9w
YXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNz
IFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwog
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVz
ID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0
IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4
ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2Nl
NzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2ht
ZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVu
dEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpA
QCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5k
ZXggNDc1NDJkYWNhZWI4NmE1YzNhZTg4ZmViNGRmYWY0NDlmYzNlZmMzNS4uOGNkNzEyMjQ5YjVh
Y2Y1NmYzZGNiNjQxMTljODgwMGI2MTA0MmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCkBAIC03NywxNyArNzcsNiBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogfQogI2VuZGlmCiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBl
ZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBp
ZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAg
ICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNz
KTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsK
LX0KLQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgdmVjdG9yKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHZlY3RvcikpKTsKQEAgLTEwMywzMCArOTIsMjggQEAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRy
dWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFu
Y2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxs
IE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAg
fQogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRz
LCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAg
QVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpCiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+ZGF0YSgpOworICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYg
eyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpIH07CisgICAgaWYg
KCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdt
ZW50LmNvcHlSZWYoKSk7CisgICAgfQorICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNl
Z21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTk2LDcgKzE4Myw2IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAg
ICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1f
c2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1f
c2VnbWVudHMpIHsKICAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwg
ZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOwpAQCAtMjA3LDcgKzE5Myw2IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0g
ICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKICAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVj
dG9yKSl9KTsKQEAgLTIxNyw3ICsyMDIsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwpAQCAtMzIyLDggKzMwNiw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdt
ZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0g
ZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0g
MTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzIyLDQzIEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgV1RGTW92ZShzZWdtZW50KX0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0
YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBt
YXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7Cisg
ICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAg
ICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3Vj
Y2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsK
K30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0
IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcg
KzM3Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICszODgsNyBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2Vu
ZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NDIsNyBAQCBib29s
IFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAg
IGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAt
NDQyLDcgKzQ2MSwxMiBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsK
IH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50
KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlv
bldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5z
aXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzQ5MCwxNiBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAg
ICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAg
W3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6
ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAg
ICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0
ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MDEs
NyArNTI1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0
PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDM5NTNiMTEyYmIxMTA3NTBhN2Ni
MTc0M2E4ZGNkNzcyNDdhZGExYWIuLjU2Mzc1YjM4OGFhNDNmNjA3NWNmOTk1YjExNzdiMzhiYTc1
Y2MxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02MiwyOCAr
NjIsOTcgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKKy8v
IERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVz
ZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9y
IGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0
YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAg
ICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQorCisjaWYgVVNFKENGKQorICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisjZW5k
aWYKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1Jl
ZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorI2VuZGlmCisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1
bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgp
PiBzaXplOworICAgIH07CisKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJv
dmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorCisgICAgYm9vbCBjb250YWlu
c01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisjaWYgVVNFKENGKQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorI2VuZGlmCisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBs
aWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisKKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAorI2lmIFVTRShDRikKKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisj
ZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorI2VuZGlmCisj
aWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwK
KyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJv
dmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwor
fTsKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOwotCisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CiAgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKICNpZiBVU0UoRk9VTkRB
VElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKICAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKICAgICB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7CiAjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwogICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CiAjZW5kaWYKQEAgLTk2LDEx
ICsxNjUsNiBAQCBwdWJsaWM6CiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAv
LyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGll
ZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJh
dGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8g
RklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2Ug
dGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBWZWN0b3I8dWlu
dDhfdD4gY29weURhdGEoKSBjb25zdDsKIAogICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KQEAgLTExNCw5MSArMTc4
LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXpl
KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29u
c3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5
KCkgY29uc3Q7CiAgICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5n
dGgpIGNvbnN0OwogICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERh
dGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNl
ZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRh
LCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7
Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KLQotI2lm
IFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQot
Ci0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0jaWYgVVNFKENGKQotICAgICAgICBEYXRhU2Vn
bWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAg
ICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVS
KQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0
YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotI2Vu
ZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAg
ICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQotCi0gICAgICAgIHN0ZDo6dmFyaWFu
dDxWZWN0b3I8dWludDhfdD4sCi0jaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCi0jZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+LAotI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwotCiAgICAgdm9p
ZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mKT4mKSBjb25zdDsKICAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYgcHJlZml4KSBjb25zdDsKIApAQCAtMjE4LDE4ICsyMDMsMjMgQEAgcHVibGljOgog
CiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0KICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsg
fQogCi1wcml2YXRlOgorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGln
dW91cygpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGln
dW91cygpOworCitwcm90ZWN0ZWQ6CisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsK
KyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6
ZV90KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYg
VVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCkBA
IC0yMzksMjMgKzIyOSwxMTAgQEAgcHJpdmF0ZToKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkg
Y29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRv
IGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFy
ZWRCdWZmZXIuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0gICAgCi0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKIAotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBE
YXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworICAgIHZvaWQgY2xlYXIoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
bXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRC
dWZmZXIKK3sKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBz
dGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDApCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOwor
ICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21l
bnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIEFTU0VSVChidWZmZXItPmhhc09u
ZVNlZ21lbnQoKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKGJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBN
YXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRh
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCk7CisgICAgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxE
YXRhU2VnbWVudD4mJik7CisKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXIKK3sKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBk
ZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzTnVsbCgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgIHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdCAgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1
ZTsgfQorCisgICAgdm9pZCBjbGVhcigpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9p
ZCBlbXB0eSgpCisgICAgeworICAgICAgICBjbGVhcigpOworICAgICAgICBlbnN1cmVCdWZmZXIo
KTsKKyAgICB9CisKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAg
IGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKKyAgICB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQor
Citwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAo
aGFzT25lUmVmKCkpCkBAIC0yNjUsMjEgKzM0MiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0
KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYs
IHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBV
U0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50Owog
ICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXpl
X3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0
IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4u
N2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAg
fQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3
b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0
KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJ
ZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFz
aCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYy
YzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0x
NDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9h
cnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFk
b3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9v
dERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBu
dWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgK
aW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2Jj
YThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+
S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBl
bmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmlu
YWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2
YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi4wNTgwNTkzYTI2YmQ3ZmJm
ODBhOGI0MDliYWU0MTk4NzNjNTJkMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
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
NjEsNyArNjEsNyBAQAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
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
Yy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uMDQx
ZGRmMDFhZjEyYTM4Zjc2NDg0Mjk4YjFkZTA5YTY3YzQ1OGQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBA
IC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAg
ICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWdvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVh
YTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3
YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3Qg
U3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQz
OTg3YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4
MjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsK
ICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRC
dWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxk
ZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3Mjll
MmI0YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29s
KGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3
OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBs
YXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9u
RmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1S
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQo
KSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
aW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEy
NjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
b250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRi
MjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7
CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCA2YWIzMDZkNmQ2ZWNjMGY4NGRkNWQ5
NzBkYWUzNzJjNDAxYmRkYzAzLi42OWFiZjkwOWM5MDMxZDI4OTdkNmM4ZmE5Y2RlODJiMzhiMGQ3
YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTYyLDcg
KzYyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJs
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
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
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlm
ZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMTFlYTJiNjFmOTI3YWZiYzUwNGJkNzQ5MTYz
NDA1NDA4MjY0MWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVj
b2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50Owog
ICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VH
ZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAg
IGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAt
NTcwLDcgKzU3MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBp
bnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91
dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZm
ZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0
aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0
aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7
CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJl
ZEJ1ZmZlci4KICAgICBkYXRhLnJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
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
aW5kZXggYmY0NzM3ZWYwNTRmZGRjMjViNDlhZTJjMzJhMjQ5NTgwZmQ5MDg5ZS4uYzUyYzEwZWFm
ZGFlOTI5MDRkN2FlODZkM2FhNDc4MDEzNjU4YTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
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
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkx
NDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMDVlNDIxZmVmZTJmNzFjNmY0NTg3YjZl
ODRhZGFhYjAzNGJlNzlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5
ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3Io
KSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENv
bnRpZ291c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBy
ZXR1cm4gQ29udGlnb3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlz
R1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4u
OTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBn
dWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgog
ICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdS
ZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTEx
MDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEw
NTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCAr
NTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZP
TlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
c2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9u
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1
Li44NzZlNWUyMDg3YjIwNTU5NTM2Y2RiZWY1YjFlODcxNjI3YmY0YzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAg
LTQ2MywxMCArNDYzLDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVu
dFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQu
Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVu
dFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7Ci0gICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIE5TU3RyaW5nICp3
ZWJBcmNoaXZlVHlwZSA9IChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlOwpA
QCAtNDc5LDE2ICs0NzksMTYgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewot
ICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5
ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmpl
Y3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQor
ICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5
ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmpl
Y3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIAogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZE
Rm9ybWF0KQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKilrVVRUeXBlRmxhdFJURkRdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGREZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOwog
CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KWtVVFR5cGVSVEZdOwogCiAgICAgaWYgKCFjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0
eSgpKSB7CiAgICAgICAgIE5TRGF0YSAqaHRtbEFzRGF0YSA9IFsoTlNTdHJpbmcgKiljb250ZW50
LmRhdGFJbkhUTUxGb3JtYXQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwpAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
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
cmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlk
ZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAog
ICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0
YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVy
ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBT
aW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlv
ciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBj
b250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQg
dGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAg
fSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIz
ZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5
ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENv
bG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVy
cmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdl
LnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJu
IHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3Ry
aW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0
ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBh
c3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ks
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
QXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
QEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWlu
VGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlm
ICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewog
ICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAg
ICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAg
ICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2Qw
MDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjNiMjhiYmQxMDI1MGFhY2MzM2I1
ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMTYsMjMgKzExNiwyMyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIHdlYkFyY2hpdmVUeXBlID0gYnJpZGdlX2Nh
c3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBl
IiksIG51bGxwdHIpKSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJj
aGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2Vi
Q29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKKyAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJv
YXJkVHlwZVJURkRdOwogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0KQot
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRG
Rm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZd
OworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUlu
UlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
Ok5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAgICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJbkhU
TUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5n
OndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlSFRN
TF07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgp
KQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRh
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
MDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uNmFkNDZmNzk3YTRiYzcwYzgx
YjcyOWQ4MzgzMDcxY2E0MTkwZGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpA
QCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmln
aW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9
CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+
IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEg
ewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAg
ICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0
LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVz
cG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsK
LSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
az4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVs
bHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiw3ICsxMDUsNyBAQCB2b2lk
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VU
b1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAq
dGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7CisgICAg
YXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBi
dWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1
c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9l
c24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZy
b21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRh
LnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAg
ICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAg
IGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVj
dGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAg
ICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tz
V2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdl
MzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCkBAIC05MTksNyArOTE5LDcgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc28KIHsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNl
KTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0g
UmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRv
IG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxm
LmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9u
RGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAg
IGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lv
bjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3
Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBA
IGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsK
LSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOwor
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNw
bGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZm
ZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNw
b25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCks
IGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdW
aWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5z
aXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3
ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2Ut
PmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVj
dG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxs
YmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3Vj
Y2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWVi
YTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAg
YXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
dXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVm
ZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZl
cjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRv
U3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1h
cHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+
aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01h
cHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5o
YXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRh
aW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0Zjgo
KTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAg
ICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFj
MDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li40Y2UwYWQ4OWM1YzhiYzlkZDE1ODNjOGQwMjRjMWFh
MmNlZDgyYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM5LDgg
KzM5LDkgQEAgcHVibGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAogICAgIFNj
cmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgeworICAgICAgICBpZiAoYnVmZmVyKQorICAgICAg
ICAgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgU2NyaXB0QnVmZmVyIGVtcHR5KCk7CkBAIC00OCwxNyArNDksMTcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJp
bmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciog
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAg
ICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVy
KG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxs
cHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBT
Y3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5
KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFt
X2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQg
c2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRk
NGJkNDUuLmQ4MGMyNDMzNDRkMDFiYTM5N2IwZjhlODVhYTMxZGQ5MWJkZjZmOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpX
b3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxv
YWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBt
X2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1f
ZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc4
LDkgKzc5LDE0IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykg
ewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAg
IGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAg
ICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+Z2V0KCktPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAg
ICBtX2RhdGEtPmNsZWFyKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAg
ICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRp
Z3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAg
ICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1f
ZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjMsNiBAQCB2b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXgg
YjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYWZmOGI1MGZhMGY0YmU0
NGVlYjUwMTRkOWM0OGE0Y2M3MTNhMmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUy
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAg
ICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAh
bV9lcnJvck9jY3VycmVkICYmICFtX2RhdGEtPmdldCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2Fk
UmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCBlNmFiNzdkZGM5MmIyN2U3YTEyMDQw
N2QxMjI3Zjk0MjdiMWI3NWEwLi4xMjkxNGMzNDUxMzhmZTg1ODc2YmE2MWUwNWQ2Y2RlYjQ1Mzcx
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
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
ZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li44NmI0NTk5NzE2ZWY0MTlmNWQ0ZjE2
ODIxZmYwNTQwNDkxM2ZkMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
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
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+Z2V0KCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9
IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25z
ZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxw
dHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmNsZWFyKCk7CiAgICAgbV9yZXNwb25z
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
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4
ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uOWQxZjJlZDViYjdkYWE2YzZh
MzhhZmYzOTc5MjJkYjZmZDQ2ZjAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
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
IG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmNsZWFy
KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+Y2xlYXIoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAg
ICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+Z2V0KCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jv
d3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBp
biB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
ID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
KQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+Y2xlYXIoKTsKICAg
ICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBm
cm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGgg
PSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoIDogYnVmZmVyLT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBp
ZiAobV9idWZmZXJlZERhdGEtPmdldCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2Vu
ZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQo
KSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgp
LCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhLT5nZXQoKSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBk
YXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRh
LCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0x
KTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEy
NTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVy
aW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJp
bmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOworICAgIEFTU0VS
VChtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAog
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
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
Y3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLjBkZTNk
MjFlMDA3ZDk1YWU3MmMzMDI3NTFjMDc0N2FjZmY1YWM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFt
ZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkK
LSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigp
KTsKQEAgLTEwOSw3ICsxMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVz
cG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY2xlYXIoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1
Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3Qg
TW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBA
IC0xMjcsMTAgKzEyNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1
ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY2xlYXIoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCAr
MTM4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10o
YXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnRha2UoKTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3Rv
cmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIGJ1ZmZlci5jb3B5UmVmKCksIFtdKGF1
dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNo
ZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYg
aXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmln
aW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkp
OworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0KIAogICAgIGRp
ZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0
YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1
NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggNjU1NzQxZTNmNWEwOTJmOTdlNzQ5
MmI4NTY0Yzg3YTc1ZTlhZjhjYy4uODY3Mjc5ZTE3ZmI1MGI5ODMwMTk5ZDlkZThmZDk2NmU2NzAw
ZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGVuY29kZVNpbmdsZU9iamVjdChjb25zdCBUJiBvYmplY3QpCisgICAgc3RhdGlj
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBlbmNvZGVTaW5nbGVPYmpl
Y3QoY29uc3QgVCYgb2JqZWN0KQogICAgIHsKICAgICAgICAgRW5jb2RlciBlbmNvZGVyKENvbnN0
cnVjdFdpdGhvdXRIZWFkZXIpOwogICAgICAgICBlbmNvZGVyIDw8IG9iamVjdDsKQEAgLTg5LDcg
Kzg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVh
NmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTky
NmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4g
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsg
V1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYx
ODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyAr
NDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAg
ICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9i
dWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1
b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9
CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVy
OyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApp
bmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1
MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9y
eTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qg
ZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRh
KCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXgg
ZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdl
ZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBz
eXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdl
U2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9T
KERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFk
ZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2
b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2
b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQog
ewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5k
YXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0g
bV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJl
c291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpp
bmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2
YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5
LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZh
Y2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBV
cG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNh
bid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8g
bG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFj
ZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtl
Q29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xs
ZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1
YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUz
NTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVM
RUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNl
bmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0g
fTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1
MTI1NTZlMTY0Li5kNTE1N2U5ZjNlY2RkMzM1NGIwMDBjOGNiMTcyZmQwZDQ2ZDE3YTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC03OCwyNiArNzgs
MjYgQEAgc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVz
b3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXMKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKCkKIHsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZm
ZXIgaXMgZGVhbGxvY2F0ZWQuCiAKICNpZiBVU0UoQ0YpCiAgICAgYXV0byBkZWFsbG9jYXRvciA9
IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7CiAgICAgYXV0byBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdl
dCgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwog
I2VsaWYgVVNFKEdMSUIpCiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdf
Ynl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7
CiAgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7
CiAgICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5n
ZXQoKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNl
ID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFk
OWRlMzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNy4uYjlmZTIzMTFiN2EyNDU4NWIyMGY3Y2EwZDVm
MmFjZTAxYmQzOGY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsK
IAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRN
ZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAg
ICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDMyYjQyMjllMTIyOTJjNTRi
NmQxY2FlZGFhYTYwN2VjOGEwN2NjYzYuLjdiN2EyOGE5NjIzYTk2MWY0ZDdiZTVjM2E1NTYzNDEy
MmI3ZTg3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZl
cihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgog
fQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
ICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVm
ZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVy
LT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNp
emUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIs
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVp
bnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAg
ICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8
PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsm
XShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0
ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4
MSw3ICsxNTgxLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwog
ICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9
IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk2Niw3ICsyOTY2LDcgQEAgc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmll
ciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZp
ZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAwNyw3ICszMDA3LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAg
LTMwMjEsMTMgKzMwMjEsMjMgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKK30KKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENP
Q09BKQogc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBAIC0zMDg1
LDcgKzMwOTUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVj
b2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRp
ZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBkMDQ4ZWFlMWMwYTAx
NzdjMzg0MzQxMjMyZjkyNTUzYjIwYTk5ZGFjLi4xZmMzZGNkZTg5MThjM2ZmM2U0YThkNTAwYWZh
ZjE2ZWE0YmUzMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTEzLDYgKzExMyw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3Mg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MCw2ICs3NjEs
MTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE1MjI5OWE2YjM0NzVhMzNjNTdiZDJkZGUwOTVj
NjY4ODA3YWQ1ZjcuLjAzZjQyYTlhOGIxZGU5ZWU3YjAyNjViNzRiZGUyYTU1NDIxNjM3MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewog
ICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxs
b2NhdGUoYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgbWVtY3B5KGltYWdlU2hhcmVkTWVt
b3J5LT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAg
ICBtZW1jcHkoaW1hZ2VTaGFyZWRNZW1vcnktPmRhdGEoKSwgYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
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
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBlZjljNDE5NDhkMTA1OWI2NDFmNmFlYjU2YzUwOWIz
MWZkNzdiNGFjLi41YjE0NDk3Nzk3NWI5NDIzOTk3Y2JhYzYyYjk3M2Y2YTYzNTdkYTMzIDEwMDY0
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
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGEyNTY0ZGYyYTVhYjE3MDEwNTkyM2U1ZTdkZTlk
NGI4MzYzNDA4OWUuLjc1ODI1ZjkwMmQxMjUwN2E3ZDRiNDhlNGUyNGYxMjYwYjdmNGY5NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTU5NSw3ICsxNTk1LDcgQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0
b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKICAgICBpZiAoaGlnaGxp
Z2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAg
YXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRX
aXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19X
S0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdl
Om5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGln
aHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBX
ZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxp
Z2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMDlhZDM5OGJjYWI2ZDQyZjQwOGE3ZmI4ZjQ4
NjI4ZjJjMTBiNDFiNS4uNTFmNjIxMmU3ZGEzZGVkNzE1NWU4NmZiNWUxNWUyNGE2MDUwZGU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5
NjgsNyArMjk2OCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5
cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAg
ICB9CkBAIC00NDYyLDcgKzQ0NjIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNl
dEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxl
VVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1
dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
bnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDQ5
Myw3ICs0NDkzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRn
ZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAg
LTQ1NDYsNyArNDU0Niw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0
YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAg
ICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBl
clJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTc2LDcgKzQ1NzYsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQo
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAg
ICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JU
eXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAg
IG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmRO
YW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA4MzhiN2QxZmI5OTRkODA2NTAzNjQ5YTNlOWM2OWEwM2E5MjNiOTA0Li42
YjkwODI0NDExNjBhNjhhMDkxM2UzMDJiYTk2MTE4MTEyYmRjMmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93
VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9u
ZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXgg
ZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZTJmZmZhYTY1NDlkZjQ4
N2NhNjQxYjg1MjcxMjQ2M2IyYWRhOTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6
V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJv
eHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAg
LCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5m
cmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1f
ZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5
bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDggQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAg
ICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAg
IGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgp
LCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IG1fc3luY0RhdGEtPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICAgICAgbV9zeW5jQ29tcGxl
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
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUx
NS4uYTQxNmM0OTQwMTkxODdiZDZiYzhhM2RiYjdkOTM1YjNjYjY3M2U5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVk
ODVlNTNhNGVkOTY5NjBhLi5lOWVlYzg3MjBjMGExMTlhZDk5YjVlYzhjMTY5OTMyNmIzNTU4Mjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsK
KyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFu
ZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpkaWZmIC0tZ2l0IGEvU291
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
b250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIHN0YXRpYyBpbmxpbmUgV0tF
ZGl0b3JJbnNlcnRBY3Rpb24gdG9XSyhXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9u
KQogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdy
aXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGljIGlubGluZSBX
S0VkaXRvckluc2VydEFjdGlvbiB0b1dLKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbiBhY3Rp
b24pCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGlu
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
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
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IDIyOWQ2MmQyZjBkMjBlODk0MTcyZTI0MWZiYjE3ZjYxYTNkZTM0ZjYuLjYxZjVjOTNmN2Q2Yzky
ZTAzMmVhNGVhMGE4NzZjNjY4NmRiNmRkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjY2Miw3ICsyNjYyLDcgQEAgdm9p
ZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmRO
YW1lLCBOU0FycmF5ICppdGVtcywKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0U3RyaW5nID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3Ry
aW5nLmdldCgpLCBwYWdlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
aGFuZGxlOwogICAgICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnkt
PmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkx
NDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uY2UwZDBkMTJjYTBmNWQxMGIxNThiOTBjZTE1
NmI5NjJkYjc5NDk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3
KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwg
YwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNU
aW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7
CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBN
YW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9t
YW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChi
eXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBA
QCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFs
U3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5jbGVhcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNo
UmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7
Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51
YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1E
YXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEw
ICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAg
ICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwog
CiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEp
CisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXpl
KCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAg
IGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAy
MTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZh
OWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3Vs
ZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8v
IFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBw
bHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4
YmYuLmRlZDFkZTE5YzE5MjVkMzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAg
ICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBt
X3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8
U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0g
ICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVp
bGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkpOwog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9
LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4
NjAwLi4xMWJiYWRiNDEyOGRmMWM4YjkyZGU0NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
d2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0g
ICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFNo
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
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYTJiZWU2Y2Q4MmM2ZjM2OTEyOTAzNWEx
Y2FjZWQ0ZTE4NGFmODljZS4uODI3YjgyNGY1OWYzMDg1ODcyNDVhM2ZhZjA5NGNmNjY1MTZjZmIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEy
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmll
cihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRU
eXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVz
LgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVi
b2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVy
cmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJ
IHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmCiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBj
SGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVT
aGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC0yMTUsNyArMjE1LDcgQEAg
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmkKICAgICAgICAgLy8gRklYTUU6IE51bGwgY2hlY2sgcHJl
dmVudHMgY3Jhc2hpbmcsIGJ1dCBpdCBpcyBub3QgZ3JlYXQgdGhhdCB3ZSB3aWxsIGhhdmUgZW1w
dHkgcGFzdGVib2FyZCBjb250ZW50IGZvciB0aGlzIHR5cGUsCiAgICAgICAgIC8vIGJlY2F1c2Ug
d2UndmUgYWxyZWFkeSBzZXQgdGhlIHR5cGVzLgogICAgICAgICBpZiAoc2hhcmVkTWVtb3J5QnVm
ZmVyKSB7Ci0gICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtZW1jcHkoc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhh
bmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxNCw3ICs0MTQsNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXpl
KTsKIH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4u
ZWE4OTUyZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQppbmRleCA4MDg2MzE4ZTk4OWM0NzljM2VlYmRiMTNhMzNiMDg5MWUwZmJmNGFhLi40YzlkYjli
MmIxN2NkZDJkNjk4Nzg5NThhYjg2NzBmNWUwY2MwMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAog
ICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNw
b25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdl
KCktPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1h
Z2VCdWZmZXItPnNpemUoKTsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZTsK
ICAgICAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNo
YXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXpl
ID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAg
IGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGFyY2hp
dmVCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdi
ZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyAr
MzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1l
Ojpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFlMjNhZmZlZGVjYWZkYmNkYTMx
MDM4YzkxYmY4MDhkYWE4ODNlYzEuLjQzNDBkZDY5MDk4MTE4MGY5YmIzZjdhNzMxNzM2NjhlZWFl
Y2ZkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQK
ICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0
b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIHVp
bnQ2NF90IHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEw
YzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1
YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcg
QEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VC
S0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0j
ZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcg
QEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2
ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcg
QEAgc3RhdGljIFdlYkNvcmU6Ok5vZGUqIGZpcnN0Tm9kZUFmdGVyKGNvbnN0IFdlYkNvcmU6OkJv
dW5kYXJ5UG9pbnQmIHBvaW50KQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNo
ZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcu
LmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZv
aWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBT
dHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpE
ZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2Yy
ODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0
MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBX
ZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBv
bmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcw
NmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3
YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwx
NCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBp
bnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2Rk
ZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2Fy
ZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAg
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlm
OTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2Mz
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2xhc3MsIE5TQXJyYXkgKgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5
Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRl
TlNBcnJheShjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpCiAtIChOU1N0
cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJB
cmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hp
dmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFy
Y2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRl
LT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRB
cmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1Njcw
MTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0
aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVz
dWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVh
Y2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CkBAIC0xNjMsMjEgKzE2MywyMSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJSZXNvdXJj
ZVJlc3BvbnNlS2V5ID0gICAgICAgICAgQCJXZWJSZXNvdXJjZVJlc3BvbnNlIgogLSAodm9pZCll
bmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2Ug
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9
IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5p
bDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpm
cmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAg
CisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCku
Y3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+
dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAg
IHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVO
YW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNl
LT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtl
eV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVz
b3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5ID0gICAgICAgICAgQCJXZWJSZXNv
dXJjZVJlc3BvbnNlIgogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCku
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcgQEAgc3RhdGljIE5T
U3RyaW5nICogY29uc3QgV2ViUmVzb3VyY2VSZXNwb25zZUtleSA9ICAgICAgICAgIEAiV2ViUmVz
b3VyY2VSZXNwb25zZSIKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2Rpbmco
KTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJl
dHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURh
dGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNp
emUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLjVkOTY0
NGQxMDdmNWUzNzZkNWRlNjJkZDRjYmI2NzZkNzQzZWQ3OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC00MCwxMyArNDAsMTMgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwog
ICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwpAQCAtNTQsMzggKzU0LDM3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
cHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAx
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VR
KCdhJywgYnVmZmVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTkzLDEwICs5MiwxMCBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0
RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEs
IHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxl
bih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVp
bGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVu
KGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+
ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwpAQCAtMTA4LDEwICsxMDcs
MTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VT
ZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4
NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytp
KSB7CkBAIC0xNDgsMTcgKzE0Nyw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkK
ICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBT
YWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywi
CiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJp
ZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERh
dGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRl
cjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAg
Ly8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAo
PSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hh
cmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hh
cmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICog
NCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIy
OworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVu
Z3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5Lgor
ICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30K
KworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0
YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29w
eSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigp
KTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHku
Z2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAor
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAg
ICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIu
aXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5jbGVhcigpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBj
aGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNv
bnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc2LDE5ICsyMTEsMjEgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdm
JywgJ2cnLCAnaCd9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAn
bCd9OwogICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRv
IGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwogICAgIGF1dG8gZ2ggPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAg
YXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEo
KTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Ci0gICAgYXV0byBs
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKICAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwpAQCAtMjAyLDE2ICsyMzksMTggQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZl
Y3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1
cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydh
JywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoYnVm
ZmVyMSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2Mn
LCAnZCd9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwogICAgIEVYUEVD
VF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319
KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKQEAgLTIyMSwxMSArMjYwLDEzIEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwg
MHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0g
YnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmco
KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigp
OworICAgIGJ1aWxkZXIuY2xlYXIoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAg
ICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVj
NjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4
LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxO
U0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5l
bXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0
YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxs
b0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWRE
YXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBl
Y3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAg
ICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVu
dCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIu
Z2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAg
ICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsK
LSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAg
IGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7Cisg
ICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBh
dXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9u
KTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRh
KCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAg
ICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBl
Y3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0Vu
Y29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444794</attachid>
            <date>2021-11-19 02:08:00 -0800</date>
            <delta_ts>2021-11-21 05:22:26 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233030-20211119210758.patch</filename>
            <type>text/plain</type>
            <size>407610</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyMjc3MDU0MjM5YWE0
ZjZkYmE3ZGM5NmVjNGU5OTY0YzIyNzExOS4uNjA2YTk2OTA0MzJmNTU1ODFjODNhNDZiZDYwMzg2
ODAxZWMyMmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1NSBAQAorMjAyMS0xMS0xOSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgor
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
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudDo6Y2xlYXJGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6
Om1vZGVsRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Omlu
bGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0
cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZv
ckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdy
YXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9y
eURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhh
c0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVy
ZWREYXRhIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNh
Y2hlZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpt
YWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQp
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
c3RpdHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAg
ICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjptYWtlQ29udGlndW91cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
SlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVj
b2RlckNHKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBl
ZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERG
RG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246Omdl
dEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhW
YXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBh
c3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENv
bnRlbnRMZW5ndGhGcm9tRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25z
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNl
cnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMS0xMS0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdl
IGV2ZW50IGhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2E3ZGJjM2FiYmZlMWU4ODY4OGRjMWVlNWNjNzU5
ZTA1OTU0ZWU2OS4uMjgzODY2NjQwYWE2NjEzMzc1ZjY4NjIxMmUyY2FjYzQwOWM0OGZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMjEtMTEtMTkgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVu
Y29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpi
dWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24g
Y29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Oldl
YlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdh
dGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMS0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IGFsbCByZWRpcmVjdCBzY2hl
bWVzIHdoZW4gY29tcGlsaW5nIGEgY29udGVudCBydWxlIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA2ZTcxYWQzODJlMjdjODMwYTUyNWFkOTUwZjMzM2Y0OWEyZTE1Y2NjLi41
ZWUxZGE3ZGZlNDAzY2ZkN2Y4OTMwMzA0MjY3OWYzZjg0YmFkODc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTEtMTkgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
MDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50
IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhU
TUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRo
Q29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2Vi
UmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTEtMTYgIE5pa29sYW9zIE1vdWNodGFy
aXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFRleHREZWNvcmF0
aW9uIHRvIFRleHREZWNvcmF0aW9uTGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2
NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3
LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJr
dXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0
aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAg
IG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRh
ZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAy
N2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsK
LSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRo
RGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5n
ZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50Lmdl
dCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwg
bnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3
ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENH
SW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAg
ICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNE
YXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1h
Z2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0
MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUz
NzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVp
bnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3Qg
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6
OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAg
ICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+
c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggOTA5OGUwNWFmNGM4
NDMzYjNkMTNiMzk1NjUwNjRhOWMxNTQzMzg3ZC4uODY3NTBkZmVlZmVjNTU1Y2FmOWExYmJmODUx
MDYwYTU5YWZmMjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFk
ZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxw
dHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9k
eVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVj
b3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjk4LDE1ICsyOTgsMTUgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1
ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24s
IHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRs
ZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9
CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVl
c3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25z
ZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0o
KSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAog
CiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1
ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNl
LmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21p
c2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5r
KCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAg
ICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODIsOSArMzgyLDkgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMw
ZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdh
MzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZl
dGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAg
ICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBi
YjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2
OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0
ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBS
ZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwot
ICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9k
eSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJl
IGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0
ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hl
RW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJl
c3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlS
ZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYo
KTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAg
ICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3
MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBi
Y2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRp
b25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlD
YWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmws
IGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVh
ZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVm
ZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJv
ZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VY
UE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3
MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2
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
CmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVm
MmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXpl
KCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwg
bGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFz
KGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRp
b25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0
dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8m
IHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAg
YXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQ
YWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxB
cnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUx
ZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAx
ZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3Jt
RGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2
ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1
ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIu
cmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
RklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdl
IGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0
Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAg
ICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAg
IGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJu
IEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtl
KCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAg
IGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3
LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFt
cygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCku
ZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5
QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5
KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgp
KSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZl
clZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFy
cmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJh
eUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1
OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0
OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFz
Rm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4wYjA1
ZGM1MDM4MDE0ZjE3NGMwYThmZTgwMTg4ZGRmYzhkZmUxMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0
Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIuY2xlYXIo
KTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAg
ICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1f
c2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
OjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2lu
azo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSks
IHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3Np
bmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4LDcg
QEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0
Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0g
dGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEo
Y29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEg
PSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZv
cm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwxOCBAQCB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAg
ICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKGRhdGEsIHNpemUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1cm4gV1RGTW92
ZShtX2J1ZmZlcik7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBA
IC0zNDEsOSArMzQ1LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0
dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5
QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIg
PSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIu
dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAg
LTM1MSw5ICszNTMsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAg
ICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9i
Ojpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBi
dWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBX
VEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNv
bnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9
CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYy
LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1f
YnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXIt
PnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9i
dWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4Myw4IEBAIHZvaWQgRmV0Y2hC
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
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
aW5kZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJi
YzlhMDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsg
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVE
YXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNp
emVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAg
Ym9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAg
ICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChp
c0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAg
Ym9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYz
MjlkMTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIy
YWUwZWExODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmlu
YWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9
IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1
ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBS
ZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNl
RGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2Qy
NDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5
ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdo
dC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGln
aHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAg
ICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQy
NzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3
ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAg
Y29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIz
MDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBk
ZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICBy
ZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1
MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4
NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmlu
ZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChj
b25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6
OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5
KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlE
YXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEs
IGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWlu
dDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0
ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQ
YXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFm
YjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5
ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhp
c3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0
ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2Vy
aWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBz
YXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3
NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5v
bi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3
IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3Ig
bmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rp
b24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRl
eCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleElu
Zm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1
MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAt
ICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtl
eS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAg
IGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAg
ICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGlu
ZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlW
YWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcg
KzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0
MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNv
cmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92
ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQg
aW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmpl
Y3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVs
bCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxv
d2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkK
ICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAg
ICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9
OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFT
U0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpN
YXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29r
IHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXgg
cmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2Vy
S2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShs
b3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAg
IH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktl
eURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0
byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICgh
dXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5k
ZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEy
ZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlm
IChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNv
ciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICht
X3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlk
IGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIw
YjZhNDYyMWZkZThjNGZkZWU2MmI5NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1
ODA5YzA5YzFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5k
KCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdl
IDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9y
ZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBt
ZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YSht
X3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEw
NTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2
OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYg
Y2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7
CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkg
ewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShT
dHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0
ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKaW5kZXggODY3ODAzYjJkNjJlM2I2MDcxYzk2MTIwN2VhMjA5YTdkY2VmNmJiYS4u
ZGI5NzcyMjVhYjA5ZjJmYTU3YmUyYzZhZmI3MTNkMjI1YTIzNTI2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmNwcApAQCAtODYsNyArODYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBIVE1MTW9kZWxFbGVt
ZW50Ojptb2RlbERhdGEoKSBjb25zdAogICAgIGlmICghbV9kYXRhQ29tcGxldGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZGF0YTsKKyAgICByZXR1cm4gbV9kYXRh
LmdldCgpOwogfQogCiBSZWZQdHI8TW9kZWw+IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsKCkgY29u
c3QKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBtX2RhdGEuY2xlYXIoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZh
bHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE1Niw4ICsxNTYsNiBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAg
ICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGll
bnQoKnRoaXMpOwogfQpAQCAtMTg3LDggKzE4NSw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
CiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQo
bV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKQEAgLTIwMiw3ICsxOTksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQog
ICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKIAogICAgICAg
ICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMTEs
NyArMjA4LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFD
b21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUoKm1fZGF0YSwgcmVz
b3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6
Y3JlYXRlKCptX2RhdGEuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IGZjNGNkNjhkYTI1NGM1MDJkYWQ0YzUyMjM1ZDI2NWVlNDk0YTg0
MGIuLmNiMmFmYjI0YmY3NGQ4MDA4MTE4NmM1ZjcyMDNlYzU2NmZkMjg5MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXgg
M2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2
Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
VVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZp
bGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUx
MGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMx
ZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6
SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0
OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlv
bigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBs
ZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3Rk
OjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMx
YWNmMTQ2OGY3ODY1MDYyMmQ3Li5mNWQ3Mjg1M2FhMWZkZjI1Y2QzMzUwZWZhMmI4YzBmNTE2NzU5
MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1
ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25s
eUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNo
YXJhY3RlcnNBcmVBbGxBU0NJSShjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFT
Q0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRI
YXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVy
biB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJu
IHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2Ny
aXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0
QnVmZmVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1
NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
IW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0Zv
bnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBv
dGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAo
bV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRl
U291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGlu
Zyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJk
ZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxl
Y3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VF
bGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywg
dG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1
ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0
byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dl
bmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1t
ZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5m
YTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
ZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIy
OGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBE
YXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENv
bW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJ
bWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0
YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJs
ZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAg
ICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1
dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1
Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5
OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmll
cjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5k
ZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1
NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250Owog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0
cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0
cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVs
ZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVk
aXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxl
bWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRh
ID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBv
dXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91
dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsx
NTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRh
JiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJD
b250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9k
b2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8v
IEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBh
bHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
IGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2li
bGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4
ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjVi
MTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRh
Y2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewog
ICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsK
LSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVu
YW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAg
LTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAg
ICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTli
MzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4
MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFs
dWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVt
ZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZp
bGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0
Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVB
c0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1
cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQog
CiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5k
QXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxh
Y2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1l
Q29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFy
a3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVu
dCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDli
Nzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2
b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBp
bWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rp
b24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2Vw
YXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGlu
IFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBz
ZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNm
M2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJp
bmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXpl
U3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkp
LCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGly
ZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAs
ICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6Omxv
YWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
dGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVu
dCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3Rv
cmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFy
c2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBv
bmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQg
YW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5
ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uOThjYWQzZTI3MzJiNzRjNTliMzIzYjFjOTQ4YzhmNmRl
Nzc5OGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11
bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSA1MCAqIDEwMDAgKiAxMDAwOyAvLyA1ME1CCiBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJ
ZChyZXF1ZXN0SWQpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9kYXRhQnVm
ZmVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNjQs
NyArNjUsNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpy
ZW1vdmVDb250ZW50KCkKICAgICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKICAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0gICAg
ICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YUJ1ZmZlci0+Y2xlYXIo
KTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBAIC04MSwzNiArODIsMzcgQEAg
dW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZXZpY3RDb250ZW50
KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCitib29sIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiAhbV9k
YXRhQnVmZmVyLT5pc051bGwoKTsKK30KKwogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGFCdWZm
ZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci0+
c2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFw
cGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAgICBt
X2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwor
ICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50
KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAgICBzaXplX3QgZGF0YUxlbmd0
aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVmZmVyID0gbV9kYXRhQnVmZmVy
LT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBidWZm
ZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNv
ZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBt
X2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2RhdGFCdWZmZXIgPSBudWxs
cHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRlcygpIC0gZGF0YUxlbmd0aDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kNzRlZTEw
OTMzZDdlZTRlNWY3ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00MSw2ICs0Miw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1w
KFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAg
ICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQor
ICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBz
aXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNv
ZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksNyArMTIxLDcgQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2Vy
dGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3
NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRh
NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRl
Y29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNl
Lm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAg
ICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0g
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0g
ICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQw
NWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3
ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVj
dG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rpbmco
KSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGlu
Z05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMz
MTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRi
MTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3
ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2Vk
KTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9
IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZl
ZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBh
Li5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1By
ZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJl
cXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1
ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7
CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1l
bnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdo
dFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRl
bnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFj
MmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUw
NTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0
ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAg
QVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJj
ZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEg
PSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJl
c291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBl
KG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVu
dCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVz
b3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRh
LT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xl
YXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGlt
ZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNo
aXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6
cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVE
YXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+
c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29t
bWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAg
IGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9h
ZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0
NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2
YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFz
cyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
Q29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3Vz
dG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgs
NyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2
ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZl
UmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBv
cEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFy
Y2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJj
aGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRp
ZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4g
bV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7
CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJv
dXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IGUwNGIzN2Y4MmJiNmNjMDg1Yjg3OTIwZjlkMTZlYzE0MGFhYTFlOGYuLmFi
YmY5Y2FlZTI4MGVjZjRjMjM5MzBmOTMxMzVmOGQyY2QxYzFjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyAr
NTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFy
dFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNv
bnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVz
b3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgz
ZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1
N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25D
aGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQor
ICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2
NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdi
MDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1l
TG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAot
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJy
b3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1
ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBs
aWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5s
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBj
bGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBl
cnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZt
X2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRM
aWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRk
YjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1l
QmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENo
cm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29y
bGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcs
NiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9s
aWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2Fk
QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3km
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRy
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRk
M2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjI2ZGYyZjZhZjJlMjZmNjRiMzg1ZDQ4
Mzk3NGRiNDY5NTRhZDM0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElG
SUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFt
ZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7
ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25z
LmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNM
b2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9u
cyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9y
ZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOwogICAg
IG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICsz
MTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFC
dWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVh
ZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBu
dWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCAr
MzM1LDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9h
ZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIp
Ci0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5n
dGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5
cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+
Y2xlYXIoKTsKKwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBl
bmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRh
dGEsIGxlbmd0aCk7CiB9CiAKK1NoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsK
K30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlm
IChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAg
bV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tz
ICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMs
IGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFM
ZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNh
NjRlZTQyYjkxNy4uNDA2NTAxZWU1MzE1YTg2ODYxMWVlY2UyNmMxOTQ2OTU1ZTFlNzkzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMg
UmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZm
ZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAt
MjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGly
ZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Q3ODIyZTI0OTI4MTZjNmU4NjZiN2U1
Yjc4ODMxMTA2MzdiMWRkZi4uNzA4NGFlMDQ3ODFlMTUwOTdiNzAwYmU3ODc1M2IyNTJkOWViOTMw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01
NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291
cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLmUxMTBiZDEyOWE4NzkyNjUyYWY2ODM1
MWUwZGMyOWYwMDAyMGNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDIyICszNywyNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YS5nZXQoKS5yZWxlYXNlTm9u
TnVsbCgpKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmNsZWFyKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBt
X2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVS
TCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSkpCi0gICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAg
ICAgeworICAgICAgICBtX2RhdGEuYXBwZW5kKGRhdGEpOwogICAgIH0KIAogcHJpdmF0ZToKICAg
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
NDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYTgxZjJkMzRjNDllYzg3NTFjMGE5NWZhZGJkNWY4NmUw
NzQ2MGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQot
ICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0
ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3OCw3ICs4NzgsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJl
ZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBp
ZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigp
OworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdl
SUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNo
ZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAg
ICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1u
QmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBT
dHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25n
IGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFk
NGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVk
IGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1
dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAg
LTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGlu
Y2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlm
ICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURh
dGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2Uo
KSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0
YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VS
ZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxp
c3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVz
cG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAh
PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBD
RlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9
IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3Bv
bnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsy
NTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIp
OwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsK
LSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVD
RkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRy
OwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0
YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkp
OwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0
IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlw
ZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlz
IG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFh
cmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlv
bmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291
cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2Ug
aXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3Vy
Y2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3Vi
ZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0g
Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZy
YW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3Vi
ZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUg
c2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1
dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8v
IGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwo
KSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRv
Y3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAK
KwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBj
YW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhh
dmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFy
a3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdp
bmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygp
ICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0
OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIw
YWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAw
MGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
aGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJl
dHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2Rl
ZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQg
b2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwog
fQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0
aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xl
YXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRp
YXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjVi
Y2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYs
OCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3Vs
YXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygp
ICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBi
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
ZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9
IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsx
NDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2Vy
Lm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5
Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+
IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBG
b250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43
MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiAr
NTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1h
Z2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tp
bnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVz
b3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAg
IHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVT
RShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBM
b2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0g
ZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2Zjkw
ODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVm
ZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNv
ZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4u
ODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRh
U2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNE
YXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0
aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBk
YXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9
CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEg
PSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOGI4M2U1MzMxOTBhNzc2
YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3NTRlMTliNzU1YTljYWM1NzRi
ZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJh
Y2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0
YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsK
LSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1
ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgz
MmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1
YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291
cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxv
bmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEo
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9
CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hl
ZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7
IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUx
YTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2Iy
YjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3Jl
YXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBw
YXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVh
dGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9j
dW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNm
MDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29s
IENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNz
ZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNW
R0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50
LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBk
ZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBD
YWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZv
bnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1f
Y29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4u
YTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZh
dGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVs
ZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1l
bnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4g
bV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5
ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgy
Njk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0
OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzEx
NDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVz
b3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0
NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1
MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7
CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVl
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVj
a05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
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
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMz
M2NmLi5mYWRlZjA1MmVmMjMxMjJkMjYzMTIxOWYxNzJmOWNhOTA5NTQ0NDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
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
U2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBk
ZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRm
YWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyAr
MzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmlu
ZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1
YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpA
QCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAg
IAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAg
ICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBw
ZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAg
IGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxv
YWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRp
b25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXgg
NzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1
MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5
ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYz
NDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLmUzZjY3MjllMjA2ZjQyNWVlNjBkNDI0Y2E2MWVm
NmQ5OGM5NTVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYg
KzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBA
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3Rl
Ym9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBj
YW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAg
IFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4m
IHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUy
Yjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBj
dXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODks
NyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwg
c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBl
cygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEy
NCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVm
ZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFi
YzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7
CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5n
JiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFj
MDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2Vm
YWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxl
Y3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03
MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJs
ZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVj
dG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhz
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3
NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdy
aXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAg
IGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxG
b3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZm
NTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBk
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVi
bGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9y
bVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJp
bmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwg
U3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2
OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0
aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNDc1NDJkYWNhZWI4NmE1YzNhZTg4ZmVi
NGRmYWY0NDlmYzNlZmMzNS4uYmJiOGE0OGE4YTkwNTE3ZDBkNzY0ZTA1MzdlNGY3Y2ZjMTg0OWNl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAor
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
QCAtMTAzLDMwICs5MiwyNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50
c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBj
b21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21l
bnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFr
ZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6
IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3Nl
cnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFm
dGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMg
c2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0g
dHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICBy
ZXR1cm47Ci0KKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBj
b21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5j
bGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0g
MSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAot
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkKIHsKLSAgICBpZiAo
bV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJp
bmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
LSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgaWYgKG1fY29u
dGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4odGhpcykgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAgYXV0byBjb21i
aW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTYwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTk2LDkgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJl
ZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdt
ZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
QEAgLTIwNywyMyArMjA2LDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5l
ZEludG9PbmVTZWdtZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBh
dXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwog
ICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAg
ICAgbV9zaXplID0gMDsKQEAgLTIzNywxNyArMjM5LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAg
ICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAg
ICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50
cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25l
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBA
IC0zMjIsOCArMzE5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRC
dWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwot
ICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTMzOSw3ICsz
MzUsNDggQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QK
IH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+
ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXND
aGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25z
dAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0
YS5kYXRhKCk7IH0sCkBAIC0zNTgsNyArMzk1LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwog
fQpAQCAtMzY5LDcgKzQwNiw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBT
aGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpA
QCAtNDIzLDcgKzQ2MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigK
ICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1
cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NDIsNyArNDc5LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21l
bnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAs
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1f
c2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKQEAgLTQ2NiwxNiArNTAzLDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0
YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIg
YmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTAxLDcgKzU0Myw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAg
YnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCAzOTUzYjExMmJiMTEwNzUwYTdjYjE3NDNhOGRjZDc3MjQ3YWRhMWFiLi42
MmJmZGJkMzUxZGJmZjdmYWJkMjU2M2ExYzgwZTk5YTE2YjNkOTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NSArNjIsMTI4IEBAIGNsYXNz
IERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVm
ZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRh
YmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRv
IG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4K
K2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdt
ZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxl
TWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5r
VG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVh
dGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVT
RShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBh
cHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVz
PiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0
aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFy
ZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigp
IGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBv
ZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2li
bGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRh
dGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAg
ICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRh
a2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMg
bm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAv
LyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBj
b250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21l
bnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3Qg
UHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFw
cGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBi
ZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJp
bmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFT
ZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAg
cHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01h
cHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBz
dHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4g
ZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9Owot
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJv
dmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0K
IAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVu
dChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlk
ZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJv
dmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAg
IFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNo
YXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSAmJm1h
cHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gJiZidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4gJiZ2ZWN0b3IpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgJiZwcm92aWRl
cikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7CisjZW5kaWYKICNpZiBV
U0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYK
KwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OwogI2Vu
ZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxl
RGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworCisgICAgLy8g
U2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRo
ZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBz
aGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3Jl
YXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29s
IHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIw
OSw1MyArMTkyLDE1MCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBW
ZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigp
OyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAg
IC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRp
bWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9u
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVs
dDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCk7
CisKK3Byb3RlY3RlZDoKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJv
b2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
ICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUg
c2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVh
cmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwot
ICAgIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VEYXRhKCk7CiAKLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFi
bGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29s
IG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
ICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVv
Zi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBBU1NFUlQoYnVm
ZmVyLT5oYXNPbmVTZWdtZW50KCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihidWZmZXItPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigp
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90
ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5n
OjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29u
c3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4g
YXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJl
QnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNO
dWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlz
RW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCBjbGVhcigpIHsgbV9i
dWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICBjbGVh
cigpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgp
CisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVm
ZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjUsMjEgKzM0NSwy
MSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJj
OTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0
KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNB
cnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29y
ay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMy
M2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXko
KQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUu
LmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uMDU4MDU5
M2EyNmJkN2ZiZjgwYThiNDA5YmFlNDE5ODczYzUyZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChk
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUw
ZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwx
MSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRp
bmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
b252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZC
dWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFs
bG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpi
aXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICBy
ZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZv
clR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUw
YzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5
MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0
IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVm
ZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0
aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
ewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBf
ZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0
YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6
ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxs
b2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5T
VUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdt
ZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQog
ewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRh
KQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8
TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNE
YXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAg
IHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRh
dGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRh
dGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0g
ICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDAp
KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEy
Niw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRh
PiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0
aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJj
YjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2Jj
OTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09O
OjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZl
ZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0t
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
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcy
M2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li4wNDFkZGYwMWFmMTJhMzhmNzY0ODQyOThiMWRlMDlhNjdj
NDU4ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5j
b2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVu
Y29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJu
IENvbnRpZ291c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
aW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgz
ODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApp
bmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi4yNDZiYjBkNTMx
YTk3ZTIwNWVkNTZiOWEzZmZkNTk4ZjUwMDgyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2
b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3Zl
TGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5p
c2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJT
dGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBl
NTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jMTVkOWZmMzUwYzIyNmJj
MzUxNDIxOTQyZTUzODViN2EzMWZmOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
fktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWdvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxN2IzNTJm
ODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjczZmMxMDA1OGVi
ZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlh
bCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hl
Rm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUq
IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2lu
LCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxp
YywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFw
cGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQz
ODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9y
aWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250
Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0
aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4
NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIz
ZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3Jp
dGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBp
bW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAo
aW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQs
MTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rp
b247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBt
X2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmlu
ZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjg5MTcyZmFhMzFl
MWNlNmRiMTdkYmQzMmRkZTJkYTM4ZmU1ODE0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaApAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVU
eXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZl
NmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgw
YjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMy
X3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3Qm
IHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUo
KSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50
MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3
NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6
ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3
IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkK
IHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4
Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8
dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7
CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9T
Zm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAg
IGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0
NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4
ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNX
T0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9y
IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252
ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3Jp
dGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRX
T0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBj
dXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMs
IGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2Fz
IGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBz
ZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTEx
OTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4
ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNP
TiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIK
ICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpp
bmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0Nzlj
NmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNP
TlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcw
OSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRp
b25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNr
ZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFW
RShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRh
VHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
Zyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsK
ICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdp
dGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6
TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4
cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRv
JiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0g
ICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9u
cy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJl
Y3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAg
IGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1
ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9u
c2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3Bv
bnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRl
bnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEq
IGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3Mo
KSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRp
Zmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXli
YWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMu
aXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVj
dG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsK
ICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJz
dDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAg
ICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtl
eUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJp
bmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygi
cGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxv
YWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChX
VEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlE
c0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBj
b250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYz
ZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVk
QnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10p
KQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwog
CiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIu
Z2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklP
UklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5
Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdl
RGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxs
RGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
aW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5
NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBz
ZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFw
cGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtl
U2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2
MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZi
Yzc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5
OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1
NDE2OTVhMDc4MjMxODFhY2FkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFr
UHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjEzLDExICsyMTMsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKIAogdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAg
ICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3
ICsyMzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0
ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6
TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7
CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5n
KCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5T
aGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVz
dCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4x
MWVhMmI2MWY5MjdhZmJjNTA0YmQ3NDkxNjM0MDU0MDgyNjQxYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBA
IC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAg
ICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGlu
dCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAg
ICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3Vy
Y2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBz
ZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
CiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5z
aWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwog
ICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRh
UHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgogICAgIGRhdGEucmVmKCk7CmRpZmYg
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
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNm
Li4wNWU0MjFmZWZlMmY3MWM2ZjQ1ODdiNmU4NGFkYWFiMDM0YmU3OWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RN
YXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBz
aXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWdvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3Qg
Y2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5
MDEzMzZiNjNjOTU2N2MwMzI1MGJkMjU3Li45NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIwNDdhOTFi
YzczZDA4MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RD
aGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAg
LTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZm
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
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEz
NGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xk
LAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRj
KDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwog
CiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9u
dERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAg
ICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5
NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjg3NmU1ZTIwODdiMjA1NTk1MzZjZGJlZjViMWU4
NzE2MjdiZjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNDYzLDEwICs0NjMsMTAgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQog
CiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50
RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVz
W2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKLSAgICAg
ICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
I2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgTlNTdHJpbmcgKndlYkFyY2hpdmVUeXBlID0gKF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmU7CkBAIC00NzksMTYgKzQ3OSwxNiBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZ107CiAgICAgfQogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CisgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9y
bWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3Jt
YXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5k
YXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICop
a1VUVHlwZVJURl07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAKICAgICBpZiAoIWNvbnRl
bnQuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNEYXRhICpodG1sQXNE
YXRhID0gWyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0
b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7
Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50
YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwx
NCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZElt
YWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1F
VHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9y
TUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRh
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVi
b2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjM1
LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9u
SW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3Rv
bURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVi
b2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBh
bmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3Zp
ZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0
eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRh
IGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBk
cmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICop
Y29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
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
YjhkYS4uM2IyOGJiZDEwMjUwYWFjYzMzYjVkYWMwZjFkYmJjZDhiNWU1MWQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTExNiwy
MyArMTE2LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGF1dG8g
d2ViQXJjaGl2ZVR5cGUgPSBicmlkZ2VfY2FzdChhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIENGU1RSKCJBcHBsZSBX
ZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5cGUiKSwgbnVsbHB0cikpKTsKICAgICAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07CisgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hp
dmVUeXBlLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUlu
UlRGREZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZVJURkRdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2Vi
Q29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CiAgICAgICAgIGlmICh3ZWJD
b250ZW50LT5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CiAgICAgICAg
IGlmICghd2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdCBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVIVE1MXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5k
YXRhSW5TdHJpbmdGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVi
b2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJD
b250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
W2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250
ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tp
XSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAg
ICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwot
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVU
SShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3
MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEy
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRh
IGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlw
ZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAg
ICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAg
aWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVk
Q3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
W21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3
ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0
ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9P
TCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFz
dGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3Ry
aW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5
cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsK
ICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAg
ICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0
ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRh
OnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxz
ZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewog
ICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThj
NDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAg
IExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dV
QVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0
YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0
aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1
ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4
Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAg
ICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3Jp
dGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkg
bV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAg
ICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0
aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAt
NTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxl
dGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
c2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAg
ICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0
dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
aW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFk
NmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90
IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5C
eXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVy
KCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFy
ZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMp
IHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4o
ZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6
YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUy
NzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNs
YXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAg
LTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVu
dD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBh
c1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wg
YWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgx
OGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUs
IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2
ZjAyNDA2Li42YWQ0NmY3OTdhNGJjNzBjODFiNzI5ZDgzODMwNzFjYTQxOTBkZTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBi
dWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNl
KHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAg
ICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2
ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1
aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2Fs
bGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90
U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4g
dGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsK
ICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywg
WWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRM
b2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNl
OwpAQCAtMTA2LDcgKzEwNSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3Zl
VGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2Um
IHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25z
dCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBi
dWZmZXIgPSBkYXRhLmJ1ZmZlcjsKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgp
OwogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6
IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIg
dGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KQEAgLTE3
NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09
IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4g
ZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBk
b2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBk
YXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNTIsNyAr
MjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21h
cC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5l
cmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5
ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lk
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YToo
UmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJj
ZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0g
ZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFE
ZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCku
c2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpk
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
ci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLjRjZTBh
ZDg5YzVjOGJjOWRkMTU4M2M4ZDAyNGMxYWEyY2VkODJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgU2NyaXB0QnVm
ZmVyKCkgPSBkZWZhdWx0OwogCiAgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICB7Cisg
ICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBTY3JpcHRCdWZmZXIgZW1wdHko
KTsKQEAgLTQ4LDE3ICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVy
PihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyLmlzRW1wdHkoKTsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdt
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYt
OCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3
ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uZDgwYzI0MzM0NGQwMWJhMzk3YjBmOGU4
NWFhMzFkZDkxYmRmNmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmws
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRG
cm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsOSArNzksMTQgQEAgdm9pZCBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9v
bCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9k
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAo
bV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIG1fZGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91
c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMTE3LDkgKzEyMyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9l
cnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAg
ICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUw
NGExZTg2M2M3Li5hZmY4YjUwZmEwZjRiZTQ0ZWViNTAxNGQ5YzQ4YTRjYzcxM2EyZTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMw
LDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wg
aXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YS0+Z2V0
KCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2Fk
aW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9l
cnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9h
ZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAg
ICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmlu
ZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3ODkuLjFjMGI1NzhhMGEw
NDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xp
ZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBi
b2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBb
Jl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0
ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1
NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3
ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRC
dWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRp
c2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55
IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUp
ID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2
YjQuLjg2YjQ1OTk3MTZlZjQxOWY1ZDRmMTY4MjFmZjA1NDA0OTEzZmQwN2YgMTAwNjQ0Ci0tLSBh
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
ICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5nZXQoKSA/IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0
MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygp
CiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1l
bnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+Y2xlYXIoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAg
LTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEs
IGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0
YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZj
ZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIK
ICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRS
ZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNo
UGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1
aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmlu
ZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThl
MTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQ
dHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENh
Y2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVy
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAg
aWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEw
MjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5
Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBv
cGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRv
cjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAog
ICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdl
NTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0
MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZl
dGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3Vi
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRh
LCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEg
PyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBk
YXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRj
NjMzNmM4Li45ZDFmMmVkNWJiN2RhYTZjNmEzOGFmZjM5NzkyMmRiNmZkNDZmMDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBW
ZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNw
b25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJp
Y3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lk
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3lu
Y2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5
bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMp
IH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERh
dGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxl
UmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMp
KQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVy
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFz
a0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywg
Jk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
IH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVj
dGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9y
ZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAg
ICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9u
b3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJl
cXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgp
OwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJh
bWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAg
ICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERh
dGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBN
QikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYm
IGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERh
dGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9
IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAog
ICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWly
ZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9u
c2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+Y2xlYXIoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVs
dGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5jbGVhcigpOwogCiAgICAgaWYgKG1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0g
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApA
QCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAogICAgIEFTU0VS
VCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5nZXQoKSkgewogICAg
ICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBh
bmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgp
IDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5jbGVhcigpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZ
b3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1
bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0g
MCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkpIHsKICAg
ICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAg
ICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkp
Ci0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9h
ZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAg
ICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAobV9idWZmZXJlZERhdGEtPmdldCgpICYmICFtX2J1ZmZlcmVk
RGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFs
dWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAg
c2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIo
Km1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xv
YWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxNSArMTI1NiwxNSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVCht
X2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhLT5nZXQoKSk7CiAgICAg
QVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNh
Y2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVj
YXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZl
dGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9u
LT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51
cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNF
X0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNh
Y2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8m
IG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAg
ICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3
NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTVi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1E
YXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50
IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3lu
Y2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
Q29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpD
YWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0
aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
ZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBm
ZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYg
KGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZi
ZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNv
cmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRp
b24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAg
ICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJv
ZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0
aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFn
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RG
TW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5z
aXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUo
KSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDll
MmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5
ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBA
QCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAK
ICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9i
dWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBi
b2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9i
dWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICBy
ZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAz
MTA1NDY4MzUzNmVhMGRjODE5My4uMGRlM2QyMWUwMDdkOTVhZTcyYzMwMjc1MWMwNzQ3YWNmZjVh
Yzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYs
NiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAs
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBt
X29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2Fj
aGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAg
ICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVhcigp
OwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3Vj
Y2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAg
Ly8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAy
NDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVhcigp
OwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAg
ICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVu
dHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpOworICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgYnVmZmVyLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAg
Ly8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAg
ICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQo
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92
ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhl
ZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlk
Q29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2Zj
ZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZm
ZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6
ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1
ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVm
ZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBw
dWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9
CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQot
ICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2
ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNj
YzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNo
YXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkg
Y29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAg
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMw
MmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRk
NTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApA
QCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdl
IHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAK
LSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNh
MGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkz
MzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFz
ZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEp
CiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAg
Ly8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRh
LgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRl
YjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYx
MzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcg
QEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlw
dCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJi
bGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRG
YWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1
ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRv
IGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3Vz
KCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAg
ICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFi
ZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0x
MDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhS
ZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUg
JWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9Owog
fQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQu
LmQ1MTU3ZTlmM2VjZGQzMzU0YjAwMGM4Y2IxNzJmZDBkNDZkMTdhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTc4LDI2ICs3OCwyNiBAQCBzdGF0
aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKFNoYXJlYWJsZVJlcwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewog
ICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFs
bG9jYXRlZC4KIAogI2lmIFVTRShDRikKICAgICBhdXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hh
cmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEo
KSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxpZiBVU0Uo
R0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdf
d2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKICAgICAgICAg
c3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKICAgICB9LCB0
aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKICNl
bHNlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFi
bGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5ZGUzMmQxYzNh
NTQ3MDUxNjBhYTRmN2M2Y2I3Li5iOWZlMjMxMWI3YTI0NTg1YjIwZjdjYTBkNWYyYWNlMDFiZDM4
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hh
cmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZh
ZWNiZDE5YmI2NGQ3Yi4uMTU1ZGU3ODIxZGZiZmYzNDI5MjI2YTNlODNjZjY5M2Q2ZGFiNDI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFi
dWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAg
ICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEzICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNo
YXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
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
ZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDEz
ICszMDMxLDIzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9
CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKIHN0
YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291
cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpAQCAtMzA5NSw3ICszMTA1
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
cj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RS
ZXN1bHREYXRhLmNwcAppbmRleCAxNTIyOTlhNmIzNDc1YTMzYzU3YmQyZGRlMDk1YzY2ODgwN2Fk
NWY3Li4wM2Y0MmE5YThiMWRlOWVlN2IwMjY1Yjc0YmRlMmE1NTQyMTYzNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAg
ICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShpbWFnZVNoYXJlZE1lbW9yeS0+ZGF0
YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWVtY3B5
KGltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCksIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNp
emUoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJh
YzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIg
KzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBX
VEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4u
YzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNf
Q0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9z
aW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0g
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKaW5kZXggZWY5YzQxOTQ4ZDEwNTliNjQxZjZhZWI1NmM1MDliMzFmZDc3YjRh
Yy4uNWIxNDQ5Nzc5NzViOTQyMzk5N2NiYWM2MmI5NzNmNmE2MzU3ZGEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBk
YXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVh
OWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2Ey
ZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBB
dHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYg
IW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVy
ID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQor
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
biwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdl
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2
NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyAr
MTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBI
aWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4
dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRv
cHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0
LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwor
ICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdo
bGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBp
bk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcw
YTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBp
c0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmpl
Y3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0
eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBl
cyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVu
YW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAg
ICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgp
IGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVh
bDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewot
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNB
cnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAg
aWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJv
cjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAg
ICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bh
c3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdp
bigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1Rv
Q3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAg
Y29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2Vz
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM3MGQwYzc3
MWM1YzI5NDE3ZTdhYTQ5N2MzZDgxMGIxNDFiOTA4MTIuLjEzY2Y3YWRlZWU4NjZmNmRiNWM1YTIw
OTQxOGFjNzY1YWQ3N2ExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xMTY4LDcgKzExNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vz
c0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tl
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lz
dGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2
YzQ3YmVmMDUxZDgwYzE2YmQxLi5lMmZmZmFhNjU0OWRmNDg3Y2E2NDFiODUyNzEyNDYzYjJhZGE5
NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApA
QCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVS
TFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0
KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAg
ICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVy
KSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAg
ICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBt
X3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBl
CiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAg
ICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9
OwotCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gbV9zeW5jRGF0YS0+dGFrZSgpLT5l
eHRyYWN0RGF0YSgpOwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2Rk
MGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAK
ICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5
ZDdiMDk4MWFhN2QzZmNkOWJkZTkwZWQ2ZmYyYWMyMzJlZTE1Li5hNDE2YzQ5NDAxOTE4N2JkNmJj
OGEzZGJiN2Q5MzViM2NiNjczZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVBy
b3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0ZWQ5Njk2MGEuLmU5ZWVj
ODcyMGMwYTExOWFkOTliNWVjOGMxNjk5MzI2YjM1NTgyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0
cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAgYXV0
byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVm
ZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVybiBzaGFyZWRNZW1v
cnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIw
OTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSAr
MzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBm
YWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5
ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJm
ZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBA
IC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFtt
X2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJv
YXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdh
dGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQg
PFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAg
ICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdl
dCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxl
ciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFu
Z2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5
cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAg
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERh
dGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlU
eXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2
OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgy
YTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAg
ICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNy
ZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
IHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5h
cHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFy
cmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMx
OWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAw
N2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFn
ZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2Vi
Q29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0
aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4
MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODlj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJl
bGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAg
ICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAg
ICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAg
ICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgp
LCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0
YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIq
KWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxl
YXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBt
X2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCks
IHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGlu
Z05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggY2IyNWEzYzgxMTM4NDhkMWMyZTQ4
ZDdjZGFjOWNiM2M1NDcyMTEzYi4uMDZmYWEwODFiMzlkMTQzNWRlYWFhMzNkOTllZTRhYzAxMGVm
ODQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3Jl
YXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5
N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFi
bGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAy
NTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3
MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lz
UHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNl
bmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAo
VU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5k
ZXggMjI5ZDYyZDJmMGQyMGU4OTQxNzJlMjQxZmJiMTdmNjFhM2RlMzRmNi4uNjFmNWM5M2Y3ZDZj
OTJlMDMyZWE0ZWEwYTg3NmM2Njg2ZGI2ZGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNjYyLDcgKzI2NjIsNyBAQCB2
b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAgICAgICAgICAgYXV0byBwbGFpblRleHRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAgICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRT
dHJpbmcuZ2V0KCksIHBhZ2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgbWVtY3B5KHNoYXJlZE1lbW9y
eS0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcw
OTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li5jZTBkMGQxMmNhMGY1ZDEwYjE1OGI5MGNl
MTU2Yjk2MmRiNzk0OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZp
ZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2lu
LCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAg
ICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0
c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlz
KTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICgh
bV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFt
X21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5k
KGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxT
dHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51
YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmNsZWFyKCk7CiAgICAgICAgIHJldHVy
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
MTg2MDAuLjExYmJhZGI0MTI4ZGYxYzhiOTJkZTQ0M2E5ZDQ2YWNhMDMzZmUwZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsK
LSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
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
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBhMmJlZTZjZDgyYzZmMzY5MTI5MDM1
YTFjYWNlZDRlMTg0YWY4OWNlLi44MjdiODI0ZjU5ZjMwODU4NzI0NWEzZmFmMDk0Y2Y2NjUxNmNm
YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIs
MTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlm
aWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlk
ZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92
ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZl
cikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUg
VUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDcgQEAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBp
cGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0
ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKQEAgLTIxNSw3ICsyMTUsNyBA
QCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaQogICAgICAgICAvLyBGSVhNRTogTnVsbCBjaGVjayBw
cmV2ZW50cyBjcmFzaGluZywgYnV0IGl0IGlzIG5vdCBncmVhdCB0aGF0IHdlIHdpbGwgaGF2ZSBl
bXB0eSBwYXN0ZWJvYXJkIGNvbnRlbnQgZm9yIHRoaXMgdHlwZSwKICAgICAgICAgLy8gYmVjYXVz
ZSB3ZSd2ZSBhbHJlYWR5IHNldCB0aGUgdHlwZXMuCiAgICAgICAgIGlmIChzaGFyZWRNZW1vcnlC
dWZmZXIpIHsKLSAgICAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1lbWNweShzaGFy
ZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRl
SGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQK
ICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDE0LDcgKzQxNCw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFu
ZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hh
cmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVy
biBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIw
Li5lYTg5NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVhYWRiYTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCmluZGV4IDgwODYzMThlOTg5YzQ3OWMzZWViZGIxM2EzM2IwODkxZTBmYmY0YWEuLjRjOWRi
OWIyYjE3Y2RkMmQ2OTg3ODk1OGFiODY3MGY1ZTBjYzAxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQog
CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJl
c3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1h
Z2UoKS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBp
bWFnZUJ1ZmZlci0+c2l6ZSgpOwogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxl
OwogICAgIApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAg
U2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNp
emUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAg
ICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChf
X2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYXJj
aGl2ZUJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIx
N2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3
ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJj
ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJh
bWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNWQ5NzRkY2JjMjg5YzRiZTVh
NzA3YTQ4ZTljODMwNTM2MDZkN2NlMi4uOGE5N2JmMDhhYjAwMWE0NzYyZGFhNDJmZDNlZGI1YTk0
ZDg1Yzg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxl
dAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVk
aXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAg
dWludDY0X3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThk
MTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0
MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgs
NyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9X
RUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsK
LSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzks
NyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1
YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgs
NyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAg
ICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2Mx
ZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3
M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJu
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5
YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFk
OGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDli
MzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgog
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyAr
MjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlw
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUz
MWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3
IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2
MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBl
MTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChC
T09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsK
ICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0g
ICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFT
b3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0
byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9h
ZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5
NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVh
dGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlm
IChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAg
ICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+
c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgp
XTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5t
bQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3
NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCll
bmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2Ug
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9
IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5p
bDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpm
cmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAg
CisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCku
Y3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+
dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAg
IHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVO
YW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNl
LT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtl
eV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVz
b3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEg
KilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9z
dHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwog
ICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlM2Y0Y2Yz
MDU5NGY2NzliYTI3NTVmMjg1MDg1Nzk4NDliYTZjNTI0Li42YWY1MjliNjg4ZmVlYjVkZTcyMWJh
YzQ5YjIzODk2NDkyMzhlNDBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMTkgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
MDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBBbGxvdyBhbGwgcmVkaXJlY3Qgc2NoZW1lcyB3aGVuIGNvbXBpbGlu
ZyBhIGNvbnRlbnQgcnVsZSBsaXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0
MThlNWZhNDcxNTI2NGMuLmZiZmQ4NDUxY2NlODk0ODBiYjRiYTNiNWE0MTZiYjg3MmVmOTgyMDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MCwxMyArNDAsMTMgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKTsKICAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwpAQCAtNTQsMzggKzU0LDM3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1Qo
YnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBj
b3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNv
cHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwot
ICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+ZGF0YSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEp
OwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClb
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTkzLDEwICs5
MiwxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAg
ICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJX
b3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEs
IHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIs
IHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWls
ZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsK
ICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsK
ICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRl
bmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9u
KSkpOwpAQCAtMTA4LDEwICsxMDcsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
MSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3Iy
KSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
V1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xNDgsMTcgKzE0Nyw1MyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2
aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9y
ZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQ
bGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1v
cmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NF
UlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxl
bmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9u
ZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBj
bG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgp
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAg
IGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3Ro
ICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2Uo
KTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1
aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIp
Cit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0Vt
cHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29w
eS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVy
CisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBj
b250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5jbGVhcigpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkp
OwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTcyLDIzICsyMDcs
MjUgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Z2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycs
ICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2En
LCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywg
J2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICds
JyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50
YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKICAg
ICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXIt
PmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7
CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVm
Z2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOwotICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoaWpr
bCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gbCA9IGNvbnRp
Z3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEo
KSwgYWJjZC5zaXplKCksICJhYmNkIik7CiAgICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5z
aXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsK
QEAgLTIwMiwzMCArMjM5LDM0IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0
YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtl
QnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRl
bnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAg
ICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNv
bnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0
byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChidWZmZXIxKTsKKyAgICBidWlsZGVyLmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVD
VF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAn
YycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwg
MHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0g
YnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmco
KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigp
OworICAgIGJ1aWxkZXIuY2xlYXIoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAg
ICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjhiZmI4NWVj
NjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4
LDUzICs0OCw1NCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxO
U0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5l
bXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0
YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxs
b0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWRE
YXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBl
Y3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAg
ICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVu
dCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIu
Z2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAg
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAg
ICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsK
LSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAg
IGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7Cisg
ICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBh
dXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9u
KTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRh
KCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAg
ICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7
CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBl
Y3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0
YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0Vu
Y29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444924</attachid>
            <date>2021-11-21 05:22:34 -0800</date>
            <delta_ts>2021-11-21 05:37:39 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233030-20211122002231.patch</filename>
            <type>text/plain</type>
            <size>425368</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNjMzhhYmUwNTA4ZGZh
MmJmZTYxODMzNDdmMGQxYWI0NTM3YTQwNi4uYzZmNDI4OWE1OTI0MmUzODViYjA4MWFiMmVlYTMz
MDRmNTk2NWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2OCBAQAorMjAyMS0xMS0yMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIKKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
Ojpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5
Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJl
bW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVs
dGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNv
dXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENh
Y2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQpOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
OgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50
OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RT
aW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAg
ICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dW51c2VkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGF0YSgpIG1ldGhvZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
N2NhM2QzMDIwZWE2N2I4YjEwZWI1YWRlYjYwYTAzOGQwZTgyZTk0My4uOTM5MGQ0ZDdkMGUzNzNh
ZTRlZjFkNzZlYjdiYzUyYWQyNzA0MmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTUgQEAKKzIw
MjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlT
dG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAg
ICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNo
aXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVz
QW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5z
TWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0
YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tNb2RlbFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGNyZWF0ZUZpbGVGb3JN
b2RlbDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVs
ZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291
cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVs
aXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMS0xOSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBmbGF0dGVuaW5nIG9mIFNo
YXJlZEJ1ZmZlciB3aGVuIHNlbmRpbmcgdGhlbSBvdmVyIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDZlNzFhZDM4MmUyN2M4MzBhNTI1YWQ5NTBmMzMzZjQ5YTJlMTVjY2MuLjkx
ODBlY2Q5MzEzNjI2NjliNGFkOGZhYjkxMGIyNDg3ZWYxM2M2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmls
aXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMw
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQg
ZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhD
b2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0xNiAgTmlrb2xhb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgVGV4dERlY29yYXRp
b24gdG8gVGV4dERlY29yYXRpb25MaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
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
MzNiM2QxM2IzOTU2NTA2NGE5YzE1NDMzODdkLi44Njc1MGRmZWVmZWM1NTVjYWY5YTFiYmY4NTEw
NjBhNTlhZmYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVz
dEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRk
UmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0
cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
dGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNv
cmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYg
eyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
aWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0yOTgsMTUgKzI5OCwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1
cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwg
cmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxl
ci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
JiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVz
dCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNl
Qm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgp
IG11dGFibGUgewpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNw
b25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAK
ICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVm
ZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0g
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlz
ZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIERPTUNh
Y2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmso
KSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAg
ICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1v
dmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBy
ZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigp
LCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Miw5ICszODIsOSBAQCB2
b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdp
dGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBl
NDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2Ez
MWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9p
ZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0
Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+
JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJi
MjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4
ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRl
ZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAg
ICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUg
aW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVz
cG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29weVJl
ZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3Bv
bnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigp
OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcw
ZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJj
Y2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlv
bkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNh
Y2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFk
ZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9k
eSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQ
T1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcw
NzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFy
ZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1y
ZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUo
KSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJ
REJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAg
IGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRh
dGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
aW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYy
ZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVm
ZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUo
KTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBs
ZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMo
Y29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlv
bmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1
cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYg
cGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFy
cmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFm
ZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFm
NTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1E
YXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZl
V2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVm
ZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5y
ZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hh
cmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBG
SVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2Ug
ZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRj
aEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAg
ICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAg
aWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1E
YXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2Uo
KQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcs
MTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0
dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1z
KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5l
bmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmlu
ZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlC
dWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHko
KS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVy
VmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJy
YXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5
dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4
ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7
CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNG
b3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjBiMDVk
YzUwMzgwMTRmMTc0YzBhOGZlODAxODhkZGZjOGRmZTEwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5jbGVhcigp
OwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAg
IG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNv
bnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9z
aW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6
OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
OjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1
dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwg
dHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2lu
ay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRj
aEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0
YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShj
b250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9y
bURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoZGF0YSwgc2l6ZSk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIG1fYnVmZmVyLmNsZWFyKCk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewotICAgIHJldHVybiBXVEZNb3Zl
KG1fYnVmZmVyKTsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDUsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1Myw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjIs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgzLDggQEAgdm9pZCBGZXRjaEJv
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
bmRleCA1ZDQ1MmNlMjg4Y2VkYzAyOTMyZDkzOTZmNjQ2MDA0NmU0NmJkNTM2Li5lNGU5MDhmMmJj
OWEwNjgzMGU2NGJhYzVkMzEwMGM4ODBhYjdjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBT
cGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURh
dGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJl
c3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6
ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAg
ICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlz
Qm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBi
b2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGJjNTg1NGY5Yjk2NmZiNjMy
OWQxNmZkZTYxOGNjZWIxZDhjOTRjYTkuLmExNjA3NDdkZTBjZWFjZWVjYzc3OGQxZmY3YjVmYjJh
ZTBlYTE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
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
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggYWZlZjQzMjhjNmFjMjBi
NmE0NjIxZmRlOGM0ZmRlZTYyYjk2N2FhMy4uMDAyNzU3MDgwMmIxNGIwOWQxYWEwNGZjZjQ3YzU4
MDljMDljMWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODAs
NyArODAsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQo
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
ZW50LmNwcAppbmRleCBhZTdiMmUyZmNhMGQzN2FhNTM5OTlmYTYyODRhNDU5YTRlNDczMWFjLi5j
NTQ0NDY5ZWU3NzY0OTA4MmE5YzNiNmQ1MTkzMWQ4ZDgwMGEzN2ZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VV
UkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLmNsZWFyKCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBm
YWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksOCArMTQ5LDYgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAg
ICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xp
ZW50KCp0aGlzKTsKIH0KQEAgLTE4MCw4ICsxNzgsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
cwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJU
KG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9k
YXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTkyLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CiAKICAgICAg
ICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0
LDcgKzIwMSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRh
Q29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxl
YXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7
CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAg
aW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKaW5kZXggMzYzOTNhM2I2ZjkyN2ZmMDRmYmMyNWVkNTdhZGRhZmMzOTI5ZWFmMy4uOWM0NzI2
ZjI2NDJkZjAxZDMzYWJjZGY0ZTMxZWM4MmY0YzlhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0x
MjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7
CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+
IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUxMWYwNGIyYjMyNjBmNmJmODYyMjM3
ZmEyOWU5MGNkNTZjOGRkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0KQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgorCisjaWYgRU5BQkxF
KE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNp
bmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09GVF9M
SU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUoKQoreworICAgIC8v
IFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBuYXR1cmUg
b2YgQVNWSW5saW5lUHJldmlldywKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3NTY3LgorCisgICAgY2xlYXJGaWxlKCk7CisKKyAgICBhdXRvIHBhdGhU
b0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7CisgICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRo
VG9EaXJlY3RvcnkpOworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6Zmls
ZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbmVl
ZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCisgICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0
ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVz
ZHoiOworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CisgICAgYXV0byBmaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUp
OworICAgIGlmIChmaWxlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIG1fZmls
ZVBhdGggPSBmaWxlUGF0aDsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUo
KQoreworICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0g
ZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5n
ZSgpCit7CisgICAgY3JlYXRlRmlsZSgpOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgp
OworCisgICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3
SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKV0pOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50
Ojptb2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUg
JWYgeCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0
ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAoYXV0
byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRo
RmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0
cmluZywgc2l6ZSk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkK
K3sKKyAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5lUHJl
dmlldyB1dWlkXS5VVUlEU3RyaW5nKSB7CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1M
TW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNt
YXRjaCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwg
KChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX2lubGluZVByZXZpZXcgc2V0UmVt
b3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxF
bGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVz
dGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRh
dGEoKSk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAg
ICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKworUGxhdGZvcm1MYXllciog
SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X2lubGluZVByZXZpZXcgbGF5ZXJdOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTU9ERUxf
RUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1v
ZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRi
NzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5
MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9y
YXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAi
LnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxl
KSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3Vu
dCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0
Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZj
YWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVS
ZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxl
ci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwot
ICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRC
eXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+
ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQ
cm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3
Li5mNWQ3Mjg1M2FhMWZkZjI1Y2QzMzUwZWZhMmI4YzBmNTE2NzU5MGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVy
LmgKQEAgLTUxLDEzICs1MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAg
ICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVy
Ojpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgq
bV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAg
ICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7
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
ZmY3My4uOThjYWQzZTI3MzJiNzRjNTliMzIzYjFjOTQ4YzhmNmRlNzc5OGVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00
Nyw2ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29u
dGVudFNpemUgPSA1MCAqIDEwMDAgKiAxMDAwOyAvLyA1ME1CCiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiAgICAg
LCBtX2xvYWRlcklkKGxvYWRlcklkKQorICAgICwgbV9kYXRhQnVmZmVyKG1ha2VVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNjQsNyArNjUsNyBAQCB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAg
ICBpZiAoaGFzRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICAg
ICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgIG1fZGF0YUJ1ZmZlci0+Y2xlYXIoKTsKICAgICB9CiAKICAgICBp
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
eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVlOTZi
MzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToK
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
NjhlNDk1MTc2YWMyMzUuLjI2ZGYyZjZhZjJlMjZmNjRiMzg1ZDQ4Mzk3NGRiNDY5NTRhZDM0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzYsNiArNzYs
NyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVy
KTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSYgZnJhbWUsIFJlc291cmNl
TG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7ICZmcmFtZSB9CiAgICAgLCBt
X2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9
CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25zLmRlZmVyc0xvYWRpbmdQb2xp
Y3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBh
Z2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9ucyB7IG9wdGlvbnMgfQogewpA
QCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMo
KQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxs
cHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0
YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQog
ICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90
QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBt
X3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3
aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMzNCwyNCArMzM1LDIzIEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIFNoYXJlCiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJj
ZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKwogICAgIGlm
IChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAgICAg
ZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAK
K1NoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNlRGF0YSkK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBj
b25zdApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8g
SG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRo
aXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdp
dGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFj
a3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxv
YWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggNGZkMmJmMGJiYjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uNDA2NTAx
ZWU1MzE1YTg2ODYxMWVlY2UyNmMxOTQ2OTU1ZTFlNzkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01NSw2ICs1Niw4IEBA
IGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9h
ZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJj
ZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC05OCw3ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgp
IGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVx
dWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4u
NzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhp
cy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIo
KnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVw
ZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBh
MGVmZjEzZWI3ODg4NzkuLjYxYzUyMjI0YjA5ZTVjY2ZhMmZiNDM2YzU3YmI5YjBkYmI2YTRhYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDkg
KzM3LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAg
U2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmNsZWFyKCk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCkBAIC01Miw3ICs1NCw3IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAz
NmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlz
aExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5p
ZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFu
aWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBB
dCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWdu
YXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZl
c3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNU
PyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2
YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBu
ZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0
byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVk
LgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNl
LmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNh
dGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8g
SWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0
aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0
eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUg
d2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93
bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9m
IHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAg
ICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNv
dXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBv
ZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNv
cHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0g
ICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNi
MjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVx
dWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wg
Y2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRl
eCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0
YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxv
YWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkg
PyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
bV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwg
bV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJh
ZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjky
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCku
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFw
cGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
IG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmlu
ZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLmE4MWYyZDM0YzQ5
ZWM4NzUxYzBhOTVmYWRiZDVmODZlMDc0NjBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAt
ODE1LDcgKzgxNSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0
ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9i
KDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04Nzgs
NyArODc4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAvLyByZWxlYXNlIHRoZSBy
ZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAg
ICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
c291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAg
ICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpA
QCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+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
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFl
NTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJm
YzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcy
NzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBl
Q2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8g
RG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBp
dCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5
LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0
aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05v
dGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUg
ZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJv
dW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtl
bHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVy
YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhj
MmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2
MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
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
ZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1
NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVk
c0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3Jh
cHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0
b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wg
aXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMx
MTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFk
Yzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQog
CiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJ
bWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdl
RGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRh
dGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdl
dCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBj
YW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2Ny
aXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2Zl
Yjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRl
SW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkz
OWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTky
NGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAg
ICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAK
ICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChk
YXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlm
IChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0
YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5j
Y2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVz
b3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2Vu
dCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNl
bmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAg
ICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVl
ZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRl
cjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhl
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5k
ZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9j
dW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1l
bnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCku
dXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBA
IHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1
MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRl
eHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYw
NDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMs
MTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9p
ZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChk
YXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9T
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
bmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li45YmExZDEyYjRi
MGIzNzIwMjE1NGE1Yjc0MTI2MzZjYzJlNDkxOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGMKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1h
aW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09
IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIo
KSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsK
IH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1
bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZp
ZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3
TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVz
cG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2Nv
bnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0K
LSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBt
X29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAg
ICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAz
MzNjZi4uZmFkZWYwNTJlZjIzMTIyZDI2MzEyMTlmMTcyZjljYTkwOTU0NDQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0
aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMx
MTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUx
LDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QK
ICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywg
ZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZp
cmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5
b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7Cisg
ICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIw
ZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZk
ZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcg
KzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJp
bmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBT
aGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVy
LmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgw
NWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkK
QEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGlu
ZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAg
ICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0g
ICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEo
KSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFw
cGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAg
ICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVM
b2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAg
ICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0
aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4
IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4
NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtl
eWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZm
MzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQz
NmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2
ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBA
QCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0
ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3Ry
aW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAg
ICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcg
Y29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0
OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNl
bmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxv
YXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJp
bmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJp
bmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNh
MDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4
ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcg
Kzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVy
IDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVk
VHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQog
CiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3
ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVy
KGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3
ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURh
dGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRl
eCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMx
YzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpA
QCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3Vp
dGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0
bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBT
dHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdi
Yzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9h
cmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAg
ICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5I
VE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2Ji
NDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFm
YzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJk
SXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsK
IHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxh
dGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpO
byk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5k
ZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApp
bmRleCA0Y2IzMzAxZTdkZjcwNzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li40YmVhNGYxOGU0
Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogCiBjb25zdCBT
aGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEt
PmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgp
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVu
dChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRh
LT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3
Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAg
ICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2
aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcg
fHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0
MGQxOTBiYTY0Y2Y4Y2UyYi4uMDZiNzZmNTk4NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCkBA
IC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAog
ICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJy
b3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9u
c2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1
NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBh
N2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
b21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudElu
Zm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCmluZGV4IDQ3NTQyZGFjYWViODZhNWMzYWU4OGZlYjRkZmFmNDQ5ZmMzZWZjMzUu
LmJiYjhhNDhhOGE5MDUxN2QwZDc2NGUwNTM3ZTRmN2NmYzE4NDljZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0
YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEp
KSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIp
KX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEp
KTsKIH0KIAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiAj
aWYgVVNFKEdTVFJFQU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03MywyNiArNzgsMTAg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNp
emUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgm
bWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5
VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVN
YXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5n
U3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlm
IChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArOTIsMjYg
QEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29u
c3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBh
YmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAg
IC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMs
IGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0g
ICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAg
ICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYg
KCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVu
dC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0
YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpCiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQo
KTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMp
IH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOworICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmlu
ZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTc1LDYgKzE2MCwy
MSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6
OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJl
ZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3Vz
OworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBA
IC0xOTYsMTAgKzE5Niw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAg
IH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMDcsMjMgKzIwNiwy
NiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxl
bmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVu
Z3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRh
dGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0
YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBA
IC0yMzcsMTcgKzIzOSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHko
KSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJv
dmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25z
dAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxOSw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdt
ZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0g
ZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0g
MTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzM1LDQ4IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzU4LDcgKzM5NSw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0MDYs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NjAsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDQyLDcgKzQ3OSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYg
KzUwMywyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1
M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uNDc0NjYwYzY3NDU2MjczM2Qx
YzgxZjdjNTQ3NGU4ZDc2YWI0ZWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC02MiwxNDUgKzYyLDEyOCBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3
cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNh
biBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmlu
ZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFw
cGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9
CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0Rh
dGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAg
ICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkg
Y29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVz
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNl
bmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMg
dG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0g
ICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVh
ZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBh
bmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAg
IFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNl
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
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQotCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAg
ICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVu
Y3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92
aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3Zp
ZGVyKSkgeyB9CiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11
dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Cit9OwogCi0gICAgICAg
IHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgJiZtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+ICYmYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+ICYmdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyICYmcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVO
U0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdS
ZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZm
ZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAv
LyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZs
YXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYgcHJlZml4KSBjb25zdDsKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDksNTMgKzE5MiwxNzEgQEAg
cHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50
VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdt
ZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRz
LmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5k
IHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0
aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKCkgY29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpOworCisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisKK3Byb3RlY3RlZDoKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRz
OworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyNpZiBVU0UoQ0Yp
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2Vu
ZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFw
cGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAw
IH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2YXRl
OgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZl
Y3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotICAgIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0K
LSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3Ig
bV9zZWdtZW50czsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEo
KTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJp
bmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlz
IGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVu
dCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICgh
c2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4u
LihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERh
dGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBBU1NFUlQoYnVmZmVy
LT5oYXNPbmVTZWdtZW50KCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcihidWZmZXItPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpk
YXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZ
ZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09u
ZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAg
fQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJl
bmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFz
T25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
ci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4u
IGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXIt
PmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0K
KworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCBjbGVhcigpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9
CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICBjbGVhcigpOworICAgICAgICBlbnN1
cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBl
bnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAg
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsK
KwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsK
ICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjUsMjEgKzM2NiwyMSBAQCBpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0
KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJE
YXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFy
UHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgp
KTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owor
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5E
QVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6
ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBj
NTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBp
ZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFn
ZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmll
ciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVk
MjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsx
NDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFj
ay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNG
OjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENG
UHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9u
YXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikp
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1
ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3
ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5j
b2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAg
IHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2Zm
MTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uMDU4MDU5M2EyNmJkN2ZiZjgwYThiNDA5
YmFlNDE5ODczYzUyZDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9
KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgy
NDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAy
YWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5n
PiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNo
YXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6
IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5n
RGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgp
IHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0Rh
dGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7
CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVX
aXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdi
YmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1
YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAg
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNV
SW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYx
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24g
c2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBl
bmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2Fz
dChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVT
ZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNb
MF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlm
IChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxl
UGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRh
aW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAg
ICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3Jl
YXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRC
dWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6
ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFl
YWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAz
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09O
LCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5k
ZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0
ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYg
KGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBh
dXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRh
ID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91
c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEu
c2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9
IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5p
dERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmly
c3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAv
LyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFr
ZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0
dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwor
ICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRv
IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
CiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxv
d2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMu
IEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0
aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEo
KSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0
VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0
RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtl
eUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5n
KCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0
YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEw
YzU4Li4wNDFkZGYwMWFmMTJhMzhmNzY0ODQyOThiMWRlMDlhNjdjNDU4ZDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFy
cmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGlu
ZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIo
KSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ291c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2Vl
Y2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5
M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9v
bChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhl
NWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi4yNDZiYjBkNTMxYTk3ZTIwNWVkNTZiOWEzZmZk
NTk4ZjUwMDgyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEtleWVkRW5jb2Rlckds
aWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3Zhcmlh
bnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZj
MDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jMTVkOWZmMzUwYzIyNmJjMzUxNDIxOTQyZTUzODViN2Ez
MWZmOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIo
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWdvdXNTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVu
Y29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
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
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0
ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMTFlYTJiNjFmOTI3YWZiYzUwNGJkNzQ5MTYzNDA1NDA4
MjY0MWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlm
IChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0
IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDcg
KzU3MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUg
dGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUg
U2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBh
YmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBl
bnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBD
R0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxz
ZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZl
ci4KICAgICBkYXRhLnJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
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
YmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2
MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMDVlNDIxZmVmZTJmNzFjNmY0NTg3YjZlODRhZGFh
YjAzNGJlNzlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIs
OSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25z
dAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ291
c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
CiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4g
Q29udGlnb3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVh
bWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0Yzcx
ZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRT
aXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBt
aW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAg
ICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8
R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBi
ZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0
MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZv
bnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlv
biwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNy
ZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2Jh
YWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1X
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4
OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMx
OTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZE
b2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4
OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYy
ZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3Ry
dWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3Qg
Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQn
cy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZh
cmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0
IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2Fs
IGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQx
Nl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZi
MDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNm
MzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5U
eXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBV
U0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIz
NjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElE
OwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBj
aDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkg
PDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
CiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
OyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90
Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292
ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
IHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBn
bHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292
ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNi
ZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVh
NjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTgg
QEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZv
bnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxl
Y3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YSho
ZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAh
PSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAg
ICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRh
LmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0g
c2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQx
ZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEw
ICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQg
cGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBj
b250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFb
aV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVu
dC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1
dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7
CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQs
MTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xp
ZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkK
ICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlw
ZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkg
Zm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1h
Z2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3Vn
Z2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01U
b1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBP
UlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpz
ZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBk
YXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlm
IChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBl
IDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJh
CiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRh
dGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxp
c3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21w
YXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBj
b250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3As
IGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3
aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRo
ZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAg
IHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRl
Z2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAog
ICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RB
dEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtw
YXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0
YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgy
LDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2
aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25z
ZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVn
YXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZl
MTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAt
NDExLDEzICs0MTEsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25z
dAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0
dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRl
bigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5
OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1
ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1w
bDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0
cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBi
b29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAg
dm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0g
PSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4
YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0
NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5k
bGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewot
ICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVu
Z3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIx
NmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLjZhZDQ2Zjc5N2E0YmM3MGM4MWI3Mjlk
ODM4MzA3MWNhNDE5MGRlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQx
LDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBE
YXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQot
ICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxS
ZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAg
ICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBA
IC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAg
ICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVu
dW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2Fp
dGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNl
U3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAg
CisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBz
dGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5Rmlu
aXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsNyArMTA1LDcgQEAgdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
ayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNr
SWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ss
IGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOworICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0
YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNj
ZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBy
ZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRv
IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRv
KiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlm
ICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhG
aW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5k
ZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEw
NjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpA
QCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAg
ICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFp
blB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0Rh
dGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQo
KS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJM
U2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAo
W2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0
YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEu
LjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgn
ICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VB
cnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAK
IHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBT
dHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgp
KTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJp
bmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5j
b250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRl
eCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBl
N2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlw
dEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6
ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVt
cHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5k
YXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09u
ZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01h
cHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0g
ICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdm
Mzc5NmI3MWEwNDMxMzRjNjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVmZGMxZmViYzZjMDY3NDRm
OTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgs
MTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2Ny
aXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHko
KSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1
ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4K
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTgg
ZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1
ZDY0MGQwNGQ0YmQ0NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJmYWQ0YjQxOTk4YmEwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkK
ICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQor
ICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0K
IApAQCAtNzgsOSArNzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNM
b2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsK
LSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAg
ICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBw
ZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAg
bV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVl
NzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDli
MTg0N2E3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJs
OyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRp
bmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiBtX2RhdGEtPmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7
IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250
ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYy
Nzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0g
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
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFm
YmQ0MTQxY2M1ZTI5Y2U5NmI0Li44NmI0NTk5NzE2ZWY0MTlmNWQ0ZjE2ODIxZmYwNTQwNDkxM2Zk
MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgs
NyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBt
X3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3Bv
bnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykp
CisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAs
IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVk
KQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRh
IGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGlu
ZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENv
bnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUo
RmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4
dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRU
eXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VU
eXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRo
b3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJy
YXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
Z2V0KCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAg
IG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVs
bHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmNsZWFyKCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9
IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jl
c3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJj
YTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xh
c3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsK
IGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWls
ZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEw
MzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFs
bG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4
YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYz
MWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4g
Jmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5l
YmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
QEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVN
ZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFS
ZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRl
ci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8q
IHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0
aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4
OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uMjdmYzFmM2E5ZDZkMWUyOGY5MGU2MWI0Y2MxZmNlNDY3
NWIxMWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9u
b3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5h
cHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
IAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwx
MSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RG
TW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAg
ICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
IH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5j
ZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmlu
Z1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmly
ZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJs
ZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAg
ICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGlt
ZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlm
IChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFy
YW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAg
ICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJ
bmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkg
ewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11
bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5n
VGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVy
aW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25v
dXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmNsZWFyKCk7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+Y2xlYXIoKTsKIAog
ICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRh
dGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMw
NCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNl
IG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hl
LgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUt
PmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6
ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmNsZWFyKCk7CiAgICAgfQogICAgIGlm
IChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1F
OiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVz
b3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZl
ci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZl
cmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVu
Y29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
QEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAog
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgq
bV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAm
JiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1
ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigq
bV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9h
ZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1f
YnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAg
ICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAg
ICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5n
IGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkg
YmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNo
KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQ
cm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHBy
ZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3Bv
bnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNz
aW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFr
ZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNr
IGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRl
ciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2Fj
aGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1
dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
CiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1
MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0
MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZv
cm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENv
dW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1f
c3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hl
OjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJh
MjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1
NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpS
ZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3Jt
YXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0
IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0g
V1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9k
eS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNp
emUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5
ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4
MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwx
MCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0
CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsg
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikg
eworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQw
ODAzMTA1NDY4MzUzNmVhMGRjODE5My4uMGRlM2QyMWUwMDdkOTVhZTcyYzMwMjc1MWMwNzQ3YWNm
ZjVhYzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyAr
NDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAg
ICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAg
LCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1f
Y2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVh
cigpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9u
U3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAg
ICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICog
MTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVh
cigpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikK
ICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNo
ZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpOworICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgYnVmZmVyLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgog
ICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1
bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJh
ZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1f
ZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNl
M2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEu
c2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3Zl
KGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYu
LmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBA
QCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYw
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpv
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
ZWFibGVSZXNvdXJjZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3
YzZjYjcuLmI5ZmUyMzExYjdhMjQ1ODViMjBmN2NhMGQ1ZjJhY2UwMWJkMzhmNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRj
Li4xNTVkZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2NmNjkzZDZkYWI0MjkzIDEwMDY0NAotLS0gYS9T
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
CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwg
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZm
ZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRG
T1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRv
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBA
IC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
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
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYw
YWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAK
QEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAx
YmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4
LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9z
aW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3
YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248
YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rp
b24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBj
ZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEw
M2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTks
NyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxl
V3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8g
ZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBA
QCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYg
KCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzEx
NzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQog
ICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdo
bGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdo
dDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1h
Z2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGln
aHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAog
ICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpz
dG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAg
ICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxp
Z2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hs
aWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIx
ZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpA
QCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsK
KyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2Iw
Y2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0
ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAq
CiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6
V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdl
LT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7Cisg
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRl
eDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDpp
XV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3Ry
aW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0
aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVm
ZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlk
ZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdl
LT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2Fy
ZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0
eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBs
OjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVz
dGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1h
Z2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0p
OwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9w
dGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0
LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3Rl
UmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVk
Rm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQ
YXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVu
dGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJk
RGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlk
NjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jiwg
Ym9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1Rh
cElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2JiNmQ1ZGQxMGNiNjM1M2FhZWY5MzU4ZTAzYjA0
MDAzMmY5Njc3Li44ODgyN2ViMjkxMmE1MzRlOTI1YmI1ZmE4Zjk2MjNhZWMzYTEzOThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFr
ZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0
UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZTJm
ZmZhYTY1NDlkZjQ4N2NhNjQxYjg1MjcxMjQ2M2IyYWRhOTRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJM
U2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVy
LCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVx
dWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUo
cGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRp
b25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAg
ICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZN
b3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywx
MiArMjE1LDggQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1
ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5j
RGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSA9IG1fc3luY0RhdGEtPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICAgICAg
bV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRh
dGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3Ip
LCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0
OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIEZyYW1lSW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2
NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFu
Z2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBv
c2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9y
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAy
NTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRD
aGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcg
X3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGlt
YWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdy
aXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNhN2NiMGZm
M2QuLjY1ZTVkODJhMzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2Vi
VmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5
ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVt
U2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0
ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQo
KSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJl
dHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBCT09MIGFs
bFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5J
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1NjUsNyBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFy
ZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJl
ZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9
IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1Jl
cHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdS
ZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hh
cmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNl
bGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KaW5kZXggN2U5MzcwZmEzMzY1NzYwZGEwNWVh
YTI3ZTUyZWM3ZjBiZDIyY2YwMC4uNmI4NzAwZDgxOTRmNDAzYWQ0ZDE4ODJhNzU5NmQ5NjYxZDQz
MjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbQpAQCAt
MTI2LDcgKzEyNiw3IEBAIC0gKEJPT0wpY3JlYXRlRmlsZUZvck1vZGVsOihXZWJDb3JlOjpNb2Rl
bCYpbW9kZWwKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBh
dXRvIGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbC5kYXRhKCktPmRhdGEoKSwgbW9kZWwuZGF0YSgpLT5zaXplKCkp
KTsKKyAgICBhdXRvIGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbC5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbW9kZWwuZGF0YSgpLT5zaXplKCkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3Vu
dCwgYnl0ZUNvdW50ID09IG1vZGVsLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoZmlsZSk7CiAgICAgX2ZpbGVQYXRoID0gZmlsZVBhdGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDY3
Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBm
MmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4
IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFiY2Y3NGQx
YmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQ
YWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2
NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1
YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJh
bmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3Ao
V2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNv
cmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYx
ODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZv
aWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxl
Z2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0Rl
bGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1f
Y29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3Jl
YXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBA
QCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0
aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0g
W21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5n
ZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAg
ICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAg
cGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBl
XSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAg
ICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgw
OTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFz
dGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVU
b1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmICht
X2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYg
dHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2Us
IGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsK
IAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJ
OjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5z
aXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5
NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2Um
LCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9v
bCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQm
LCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBm
aW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZj
NDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2ln
bmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigp
IGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgp
LgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEp
KS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIs
OSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0
YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7
Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1
bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCks
IHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29u
dGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGln
dW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVx
dWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9B
UEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVm
KHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3
ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwm
IG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgp
LCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDlj
NDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlm
ICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
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
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRl
NThjMWU4Y2MxMjMxYTY3Ny4uY2UwZDBkMTJjYTBmNWQxMGIxNThiOTBjZTE1NmI5NjJkYjc5NDk4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5F
bGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93
ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVy
cyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQor
ICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMs
OSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1E
YXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAg
IGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBN
YW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3Ig
PSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhLT5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlm
IChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRh
OworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsK
IAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBA
IHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2Fk
RGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVs
aXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFt
X21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9t
YW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShl
bGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVh
bFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5
Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQz
ZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdl
YkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNo
b3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpT
IGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVu
dFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmRlZDFkZTE5
YzE5MjVkMzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRC
dWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0
YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVy
QnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dp
dGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAg
aWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNd
KFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RG
TW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVy
KSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkpOwogICAgICAgICBpZiAo
bV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi4xMWJiYWRi
NDEyOGRmMWM4YjkyZGU0NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRj
aExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3Bv
bnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVj
NGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRj
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCku
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZl
NTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwog
ICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFs
OwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQx
MDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5
ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODks
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1h
aW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmls
ZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBl
NjJhMS4uMjk0YzI0MDcyZGJmZTk3ZDBjNjU3YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHko
dHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rv
cjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRl
czo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVm
ZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9y
IG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aXBjSGFuZGxlOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi5lYTg5NTJkYjU5
MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVhYWRiYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9y
PFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uYmZl
NjI0ZDUxOTNjNTJkOTY0MTU5ZjFlZmNkY2QwMTM5NDcwMDcwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkg
eyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksOCArNjksNyBAQCB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVh
cigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li43NmZmYTEx
MTM5MmE5ZDNiNGY4NWI1OThjZDZhYmNjZTUxODhmMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRk
OWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VC
dWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxl
OwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAg
YXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAg
ICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFk
NDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRj
NjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFi
MDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1
MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUp
OwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAg
IHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhB
VkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
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
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThh
ZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUy
OTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
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
bmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZl
ciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVu
Y29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNv
cmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBj
b3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODNlZmMyOGFhZDM1NTQzNmZhYmUxNDFkNzY1
ODcwOGEwM2Y0YTQzLi4zNzM3MTE2N2I2NWJhYTEzN2ZjMGUyYjVlMzAzMTU2YjM0NzFlODQzIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMTkgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBpbWFnZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcx
NTI2NGMuLjgzYmY3ZDA0YTRmODUxY2M0MzNkNjMwOGQ0MDcwOTg5YTJiYTA2YjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MCw1MiArNDAsNTEgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJp
bmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5z
aXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwot
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAg
IEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScs
IGJ1ZmZlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05MywxMCArOTIsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEw
LCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIu
Z2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVu
YXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBl
Y3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEo
KSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKQEAgLTEwOCwxMCArMTA3LDEwIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTQ4LDE3ICsxNDcsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
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
dHkoKSk7CisgICAgYnVpbGRlcjIuY2xlYXIoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE3MiwyMyArMjA3LDI1IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRv
IGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwot
ICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKLSAgICBhdXRvIGwgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDExKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKKyAgICBhdXRvIGwgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSgx
MSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwog
ICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1
ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CkBAIC0yMDIsMzAgKzIzOSwzNCBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9y
PHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAg
ICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBi
dWlsZGVyLnRha2UoKTsKICAgICB9OwogICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZl
cjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAn
YicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0p
LmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoYnVmZmVyMSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2En
LCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7
ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0s
IHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmlu
ZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwg
IjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLmNsZWFyKCk7Cisg
ICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhT
dHJpbmcoKSwgIiIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3
Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5
OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJh
eTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZm
ZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMs
IGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAg
ICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdv
cmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdl
dCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSkt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1w
RmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmls
ZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQp
CiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwog
CiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxs
byIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAg
TlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRh
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGRE
YXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0
aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQg
PSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAg
IGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNU
X1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9
IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNp
emUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXpl
KCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWls
ZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWRE
YXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50
YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRh
LmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXIt
PmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0g
YnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRh
dGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNU
X0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444925</attachid>
            <date>2021-11-21 05:37:48 -0800</date>
            <delta_ts>2021-11-21 18:41:25 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233030-20211122003746.patch</filename>
            <type>text/plain</type>
            <size>437302</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM5M2E1ZWFjNDI4OTAz
NzMzNWNkNzE5YmI2MTQ4YzYzOGM5ODE0YS4uYzZmNDI4OWE1OTI0MmUzODViYjA4MWFiMmVlYTMz
MDRmNTk2NWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4MiBAQAorMjAyMS0xMS0yMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIKKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
Ojpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5
Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJl
bW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVs
dGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNv
dXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENh
Y2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQpOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
OgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50
OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RT
aW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAg
ICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGF0YSgpIG1ldGhvZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwNgorICAgICAgICByZGFy
Oi8vODU2NDA1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKwogMjAyMS0xMS0yMCAgQWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25dIEluaXRp
YWxpemUgbGF5b3V0IGJveCBnZW9tZXRyaWVzIGZvciBwcmVmZXJyZWQgd2lkdGggY29tcHV0YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggODA2YTc0MjlmNWE1ZWVhM2UzZTRhMjQ0MjJmZjEwZjBhYzUwMGE2Zi4u
OTM5MGQ0ZDdkMGUzNzNhZTRlZjFkNzZlYjdiYzUyYWQyNzA0MmVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjUgQEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNv
cmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1
ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAg
ICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAg
ICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJ
UEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0
dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAg
ICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZp
bGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5Q
ZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3
IGNyZWF0ZUZpbGVGb3JNb2RlbDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpj
cmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKworMjAyMS0xMS0xOSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBm
bGF0dGVuaW5nIG9mIFNoYXJlZEJ1ZmZlciB3aGVuIHNlbmRpbmcgdGhlbSBvdmVyIElQQworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMzYzCisgICAg
ICAgIHJkYXI6Ly84NTYwMDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIHNldmVyYWwgcGxhY2VzLCBhIFNoYXJlZE1lbW9yeSB3YXMgYWxsb2Nh
dGVkIGZvbGxvd2VkIGJ5IGEgY29weS4gVG8gcGVyZm9ybQorICAgICAgICB0aGlzIGNvcHksIHRo
ZSBTaGFyZWRCdWZmZXIgd2FzIGZsYXR0ZW5lZCB3aGljaCBjb3VsZCBpbnZvbHZlIGEgbWVtb3J5
IGFsbG9jYXRpb24KKyAgICAgICAgZm9sbG93ZWQgYnkgYSBjb3B5IG9mIGFsbCBzZWdtZW50cyBp
bnRvIHRoZSBmaW5hbCB2ZWN0b3IuCisgICAgICAgIFdlIGluc3RlYWQgbWFrZSB1c2Ugb2YgU2hh
cmVkQnVmZmVyOjpjb3B5QnVmZmVyIGNvbnZlbmllbmNlIG1ldGhvZCB3aGljaCB3aWxsIHNpbXBs
eQorICAgICAgICBjb3B5IHRoZSBpbmRpdmlkdWFsIHNlZ21lbnQgaW50byB0aGUgbmV3bHkgYWxs
b2NhdGVkIFNoYXJlZE1lbW9yeS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gdXNlciBvYnNlcnZh
YmxlIGJlaGF2aW91ci4KKworICAgICAgICBGbHktYnkgZml4OiBTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlIGlzIGZhbGxpYmxlOyBmZXcgaW5zdGFuY2VzIGRpZG4ndCBjaGVjayB0aGUKKyAgICAgICAg
cmV0dXJuZWQgdmFsdWUuIFNvIHRlc3QgdGhhdCBpdCBzdWNjZWVkZWQgYW5kIHByZXZlbnQgYSBj
cmFzaCAobnVsbCBkZXJlZikKKworICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0
UmVzdWx0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRl
bXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVy
Zm9ybUFjdGlvbk9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9t
IGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBj
YW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5n
CisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1l
bW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVs
bCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBp
biBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRmb20gc3BlY2lm
aWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQuCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29k
ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBh
c3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xp
YnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5
LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFi
aWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgp
OgorCiAyMDIxLTExLTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkdQVV0gU2VuZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVh
ZDk1MGYzMzNmNDlhMmUxNWNjYy4uOTE4MGVjZDkzMTM2MjY2OWI0YWQ4ZmFiOTEwYjI0ODdlZjEz
YzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIx
LTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlz
dGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUg
YW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAg
KC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRh
dGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVN
ZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBk
YXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEx
LTE2ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJk
YTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZm
ODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5l
ZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAg
IGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAg
ICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5n
PihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5k
ZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjll
MjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUlt
YWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5H
UmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9i
OjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1
MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVm
NWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5p
bCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAg
ICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0Mzcu
LjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21w
dXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90
IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0
YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxs
cHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjg2NzUw
ZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBET01DYWNo
ZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3Np
dGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3Qu
Z2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1
bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIp
LCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNl
ID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAg
ICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RG
TW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9u
c2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAg
ICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24s
IHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+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
ZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc0
LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2Ut
PmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0g
cmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRC
eUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwg
dGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1
bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEg
PSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1
dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkp
OwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGlu
Zm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAg
ICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMz
NWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRo
UmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0
PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25z
ZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3
NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDgg
QEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1E
YXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7
CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1p
cy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAg
ICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsK
QEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10o
Y29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAg
IHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2Jm
OGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNl
cHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
cnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJD
T1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAK
LXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHko
Y29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3
NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3
NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9l
bmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1h
dAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07Cisg
ICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09O
OjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0
LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBm
b3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkp
OwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhh
MzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJ
ZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAg
ICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBi
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNt
cChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChh
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wg
TWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAz
LDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFy
aWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBh
dXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWly
LmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShw
YWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7
CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRp
YUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIu
c2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJjODhm
ZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1
dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAg
ICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5j
b250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkp
OworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJs
b2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBA
QCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAg
IGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+
KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgp
KQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFr
ZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1l
ci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAg
IHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxv
YigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJv
ZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNU
ZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAg
ICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2Vh
cmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVz
KSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRh
dGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFy
cmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7
CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1
ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFl
YWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4g
Ym9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFr
ZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1f
ZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3
NWYwOWQ4Yjc5ZmY2MmIzYi4uMGIwNWRjNTAzODAxNGYxNzRjMGE4ZmU4MDE4OGRkZmM4ZGZlMTAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVB
bmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRy
OworICAgIG1fYnVmZmVyLmNsZWFyKCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAg
IGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYs
MTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0p
IHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0
cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRU
eXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRU
eXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkK
LSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5k
RGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRU
eXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1E
YXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICszMjYs
MTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICgh
bV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRh
dGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30KKwordm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit7Cisg
ICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7
CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgp
CiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIs
IDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7
CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0K
IAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5
cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0
cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRh
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEw
ICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkK
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYm
IHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9i
dWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlm
IChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9h
ZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2Jh
OTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEzYmMyZjcwZjRlYzZkOGJi
MGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7
CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQ
dHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8
RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2NDYw
MDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAt
NDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3
ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYm
IGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJv
ZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURh
dGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJv
ZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShi
dWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
aW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0N2Rl
MGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAg
ICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxG
b3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9p
ZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGlu
Zyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2My
Y2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGln
aGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hs
aWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hs
aWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNi
OTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2ln
bmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZm
ZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIo
KTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBk
ZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAK
aW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0
NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNw
cApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5
UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5
UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRo
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBl
bmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBA
IHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktl
eURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsK
IAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElE
QktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2
OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1
YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChj
b25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURC
S2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4
NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmpl
Y3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVE
Qik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAg
YXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwog
ICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRv
IHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyAr
MTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZl
cnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgp
KTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURC
S2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2
NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhS
ZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGlu
IHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGlu
IGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9y
ZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0
aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkK
ICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBr
ZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp
b24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBv
YmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmpl
Y3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwor
ICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBp
ZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5
NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7
CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAg
IGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJL
ZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWlu
aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAg
aWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50
NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlU
eXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8g
bG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0o
KSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3Vu
dCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBw
ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
dXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAz
MjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJz
b3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJl
bnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3Vy
cmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5k
QXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6
cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVu
dEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3NTcw
ODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAog
ICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVz
c2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBt
ZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQ
ZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0
Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6
IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3
RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBz
dGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGRlNjE1OWFjYWQwMWQzN2IzY2Q2
MWQxZWZlYzc2YzZiZDEwZGZkOTMuLmM1NDQ0NjllZTc3NjQ5MDgyYTljM2I2ZDUxOTMxZDhkODAw
YTM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTgyLDE0ICs4Miw2IEBAIFJlZjxIVE1MTW9k
ZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE1vZGVsRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBIVE1MTW9kZWxF
bGVtZW50Ojptb2RlbERhdGEoKSBjb25zdAotewotICAgIGlmICghbV9kYXRhQ29tcGxldGUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIG1fZGF0YTsKLX0KLQogUmVmUHRy
PE1vZGVsPiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Rh
dGFDb21wbGV0ZSkKQEAgLTEyNCw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0g
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEuY2xlYXIoKTsKICAgICBtX2RhdGFDb21w
bGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE1Nyw4ICsxNDksNiBA
QCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0KICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNl
LT5hZGRDbGllbnQoKnRoaXMpOwogfQpAQCAtMTg4LDggKzE3OCw3IEBAIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAg
ICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
KyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTIwMyw3ICsxOTIsNyBAQCB2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQo
KSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsK
IAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwog
CkBAIC0yMTIsNyArMjAxLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAg
ICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUoKm1f
ZGF0YSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwg
PSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJl
c291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNv
dXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDhjYzYy
MTM4YWJlZjUzNDM4YTBjNTM5ZWE2OGI5YjZjNmM0Zjg4YzcuLjljNDcyNmYyNjQyZGYwMWQzM2Fi
Y2RmNGUzMWVjODJmNGM5YTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtNjMsNyArNjMsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5V2l0aFJlc29s
dmVDYWxsYmFjazxJRExJbnRlcmZhY2U8SFRNTE1vZGVsRWxlbWVudD4+OwogICAgIFJlYWR5UHJv
bWlzZSYgcmVhZHkoKSB7IHJldHVybiBtX3JlYWR5UHJvbWlzZS5nZXQoKTsgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbW9kZWxEYXRhKCkgY29uc3Q7CiAgICAgUmVmUHRyPE1vZGVsPiBt
b2RlbCgpIGNvbnN0OwogCiAgICAgYm9vbCB1c2VzUGxhdGZvcm1MYXllcigpIGNvbnN0OwpAQCAt
MTMwLDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
OwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNl
PiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIz
N2ZhMjllOTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisj
aW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRf
TElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAv
LyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJl
IG9mIEFTVklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRo
VG9EaXJlY3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eSgpOworICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0
aFRvRGlyZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZp
bGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5l
ZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lz
dGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51
c2R6IjsKKyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRl
KTsKKyAgICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2Zp
bGVQYXRoID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxl
KCkKK3sKKyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9
IGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFu
Z2UoKQoreworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUo
KTsKKworICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmll
d0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6bW9kZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXpl
ICVmIHggJWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51
dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCkubW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0
aEZpbGVTeXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURT
dHJpbmcsIHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdE
aWRPYnRhaW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQp
Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVBy
ZXZpZXcgdXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRN
TE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlz
bWF0Y2gsIHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCks
ICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJl
bW90ZUNvbnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBl
c3RhYmxpc2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIq
IEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9pbmxpbmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVM
X0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQg
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
Ny4uZjVkNzI4NTNhYTFmZGYyNWNkMzM1MGVmYTJiOGMwZjUxNjc1OTBkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oCkBAIC01MSwxMyArNTEsMTQgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAg
ICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
ICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Km1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAg
ICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5
NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVk
YWVkNDFlNGJhN2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0
b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxl
bWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBh
cmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRT
VkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRl
ZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNl
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlh
dGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJl
c3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9p
bW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAg
c3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJj
ZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0
aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3Qg
Rm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0
aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5n
czsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rv
cj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxv
YWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVz
dDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJl
cXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7
CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcy
NGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdj
MDQ0NzNiMTRjNjg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NDEyNSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2Vk
QXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAog
ICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9u
YWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2
NjU4MjAyMzg1MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFu
c2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xh
c3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlm
CiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBA
IC01NzMsNyArNTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5k
aWYKIApAQCAtNjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQo
KTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQo
RWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJM
Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcg
Kik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdl
ZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApA
QCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJm
N2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcw
NDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAg
YXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJp
YnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12
b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAg
ICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwog
ICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5
cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIK
ICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxl
bWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdl
YkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRl
ckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdl
YkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFs
dCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIw
MSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYx
ZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3
ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8m
IG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBs
YWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAg
ZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxl
V3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBu
b3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNG
aWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2Us
IE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNT
dHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAg
ICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVz
b3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRi
Njc5ZTIyNzkuLmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBz
dHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7
CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAg
IFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVy
KCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlm
aWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNF
bXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAK
LSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1h
Z2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUo
bmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBv
YmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7
CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAg
IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNl
LT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsK
KyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDog
YXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
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
LTYxNyw3ICs2MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9y
SW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMw
LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRv
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5n
ZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0
LDcgKzY0NCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdl
cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
aW5kZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3
YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxh
Y2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQo
RWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewog
ICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQp
OwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdl
dCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdl
J2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4g
QXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxl
bWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVz
Ol0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2Jh
NzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0
NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAg
ICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmls
ZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRl
U3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlF
bnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGlu
ZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVt
cGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0
aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVj
dG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1
cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAg
ICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0
ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBj
cmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnRE
YXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSku
bGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0
IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBk
YXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBk
b2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3Rvcnkg
bGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZl
MGZmNzMuLjk4Y2FkM2UyNzMyYjc0YzU5YjMyM2IxYzk0OGM4ZjZkZTc3OThlYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
NDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNv
bnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAg
ICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWdu
ZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAg
ICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAg
ICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPmNsZWFyKCk7CiAgICAgfQogCiAgICAg
aWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJl
bW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxs
KCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRh
TGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVy
LT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVu
dCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXIt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29u
dGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAg
ICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAg
ICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxl
bmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVy
biBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNh
ZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3
YzQwOTA5ZmU5N2QwN2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxs
VGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3Rh
bXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7
IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJl
ZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNC
dWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQor
ICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgo
KSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgp
OwpAQCAtMTE5LDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29k
aW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
ZGF0YUJ1ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIx
OC4uZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQog
ICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNv
dXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0
RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVz
dWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0g
YmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1
ZWFjNDcyLi41Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFp
blJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGlu
ZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0g
ICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0
RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0K
IAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIx
ZjdhLi45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJl
c291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZm
ZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7
CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXgg
OTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNl
NjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBA
QCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJl
cXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2Fk
ZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9h
ZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRp
b25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIx
NWFkODFiZjgwZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2
MDgsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBh
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5t
YWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5k
YXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWlt
ZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0
RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXpl
KCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2
NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNl
cygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAot
U2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAor
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAg
LTIyNTYsNyArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGlu
Z011bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgp
OwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VE
YXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7
CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBl
ODVlY2NjYTRjYmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBA
QCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3Vy
Y2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsK
IGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNo
aXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJh
bWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNl
TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBI
YXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRk
NGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFk
NzA0NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAv
LyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBw
b3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1
dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2
YjM1Li40ODBmMjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsg
fQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFs
IHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVX
aXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVh
N2UxOTI3ZmM2NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRl
bnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBj
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0
cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29p
bmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0
YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hy
b25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBi
dWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBs
aWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1
ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVz
dCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9w
dGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRp
b25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0
aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYy
MWZkMzdjMTBiZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNo
ZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBA
IC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5B
QkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hp
dmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwor
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6
Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20o
KSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0
aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0
NjY4ZTQ5NTE3NmFjMjM1Li4yNmRmMmY2YWYyZTI2ZjY0YjM4NWQ0ODM5NzRkYjQ2OTU0YWQzNDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2
LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRl
cik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwg
bV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkg
fQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9s
aWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5w
YWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsK
QEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2Vz
KCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVs
bHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKICAgICBtX2RlZmVycmVkUmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRh
dGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEK
ICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
d2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAg
IGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQog
CitTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEp
Ci0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5j
bGVhcigpOwogfQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkg
Y29uc3QKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8v
IEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0
aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3
aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJh
Y2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUw
MWVlNTMxNWE4Njg2MTFlZWNlMjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xv
YWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3Vy
Y2VMb2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3Bv
bnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEo
KSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVh
bCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJl
cXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUu
LjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRo
aXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVy
KCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51
cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIw
YTBlZmYxM2ViNzg4ODc5Li42MWM1MjIyNGIwOWU1Y2NmYTJmYjQzNmM1N2JiOWIwZGJiNmE0YWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5
ICszNywxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAg
IFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2Fz
dDxTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5jbGVhcigpOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVj
dGVkOgogICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4w
MzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAg
IGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0
VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8g
QXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2ln
bmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlm
ZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVT
VD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUw
NmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291
cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3Qg
bmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJl
c291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJj
ZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGlj
YXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8v
IElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdp
dGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEg
NHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJl
IHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRv
d25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBv
ZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAg
ICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVz
b3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwot
ICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBj
b3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgot
ICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYz
YjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29s
IGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5k
ZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3
NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2Zi
YWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgp
LmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApp
bmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5hODFmMmQzNGM0
OWVjODc1MWMwYTk1ZmFkYmQ1Zjg2ZTA3NDYwZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAg
LTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODc4
LDcgKzg3OCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgLy8gcmVsZWFzZSB0aGUg
cmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAg
ICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICBy
ZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAg
ICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50
IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAg
ICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYp
KTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
blRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3
ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRh
MjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlM
aXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwg
YnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fu
bm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0
aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRo
ZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAo
YXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0
aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VL
ZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAor
CiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwg
Y2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkp
OwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVz
b3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2
ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVz
b3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0
eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7
CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlBy
b3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVC
VUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAg
ICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBB
cmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURp
Y3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4g
cmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0z
MzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3Vi
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAg
ICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
YXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFt
ZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJm
cmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIElu
dmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ug
d2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAg
aWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0
dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlh
ZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBA
IC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRh
KQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYy
ZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3
MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5n
IENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlw
ZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8v
IERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQg
aXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVy
biBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0
Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5
OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhl
IGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFy
b3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlm
eShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlr
ZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5l
cmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4
YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZj
NjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0
cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBD
YWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2Nj
dXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5n
OwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMg
fTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBu
dWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3Rp
ZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENh
Y2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250
Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2Fk
ZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXgg
Y2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlm
NTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVl
ZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAg
ICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3Vz
dG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Ym9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAg
ICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
LCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1E
YXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29s
IGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTlj
MTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBh
ZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
IAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBk
YXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRl
SW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxk
RGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6
bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFn
ZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFk
YXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAg
ICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3Jp
cHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0
U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5n
ZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4g
Y2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNj
cmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNm
ZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyAr
MTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0
ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29s
IGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5
MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5
MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0g
ICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwog
CiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAo
ZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kg
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBp
ZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERh
dGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewor
ICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEo
KSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCA4YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJi
NGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewog
ICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7Cisg
ICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZl
ckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4u
Y2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBw
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
ZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRv
Y3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3Vt
ZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgp
LnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1l
bnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
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
NjUuLmVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBA
QCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlw
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNm
NTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRU
ZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2
MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYz
LDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZv
aWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAo
ZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEv
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
ZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUy
Zjk1YTY1ZDViYjdhZjkwZWJkYTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiAr
MzksNyBAQCBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5h
bCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVy
OwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9y
ZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
aW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uOWJhMWQxMmI0
YjBiMzcyMDIxNTRhNWI3NDEyNjM2Y2MyZTQ5MTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVN
YWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9
PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRy
KCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7
CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2
aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmll
d0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJl
c3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9j
b252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9
Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwg
bV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBv
bGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYw
MzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdp
dGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVhNmEz
MTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1
MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0
CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcs
IGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBm
aXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxh
eW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwor
ICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhi
MGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRm
ZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3Ry
aW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3Qg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRl
ci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4
MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigp
CkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2Vs
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVy
ID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0g
ICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwot
ICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRh
KCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5h
cHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAg
ICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxl
TG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAg
ICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxl
dGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
ZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRl
eCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1
ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVk
Q29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBL
ZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmlu
ZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2
ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0
MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEs
NiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFz
dGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldl
YkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0
cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAg
ICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5n
IGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRy
PEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1h
dDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAj
ZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3Ry
aW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3Ry
aW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMz
YTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVm
ODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9h
cmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2ln
bmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3
ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2Rl
ciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJl
ZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0K
IAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0
ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQs
NyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4
N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQs
NiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVi
b2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5k
ZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRj
MWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNz
IFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
QEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1
aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwg
U3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxl
UGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3
YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJl
NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJv
YXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAg
ICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUlu
SFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNi
YjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRh
ZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNv
bnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7
CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBs
YXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6
Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNG
b3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAK
aW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNGJlYTRmMThl
NGM3OWRlYjU3NDRmMjgwZTlmOGY5YmMxODNjNmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKIAogY29uc3Qg
U2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRh
LT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2Uo
KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGll
bnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0
YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAg
ICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJl
dmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5n
IHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2Ux
NDBkMTkwYmE2NGNmOGNlMmIuLjA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2
aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIApA
QCAtMTE4LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywK
ICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVy
cm9yIG1fcHJldmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3Bv
bnNlOwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1
NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEw
YTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBv
cGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAppbmRleCA0NzU0MmRhY2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1
Li5iYmI4YTQ4YThhOTA1MTdkMGQ3NjRlMDUzN2U0ZjdjZmMxODQ5Y2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURh
dGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRh
KSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVy
KSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwog
I2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEw
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVk
QnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5z
aXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUo
Jm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1h
eVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxl
TWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGlu
Z1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBp
ZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9y
KSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXpl
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDI2
IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNv
bnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUg
YWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAg
ICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlz
LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2Lgot
ICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0g
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlm
ICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0Rh
dGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCi1jb25zdCB1aW50OF90KiBT
aGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKQogewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50
KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAg
ICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlz
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKKyAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJp
bmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE3NSw2ICsxNjAs
MjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVy
Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91
czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpA
QCAtMTk2LDEwICsxOTYsOSBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAg
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAg
ICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsyMDYs
MjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxl
bmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRh
dGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpA
QCAtMjM3LDE3ICsyMzksMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21l
bnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTMyMiw4ICszMTksNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzM5LDcgKzMzNSw0OCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVu
dCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUo
ZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7
CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsK
KyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5n
U3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRo
KTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNv
bnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2Nv
bnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAor
eworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQor
Citjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAg
LTM1OCw3ICszOTUsNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJs
ZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC0zNjksNyArNDA2
LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
IH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVj
b2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00MjMsNyArNDYwLDcg
QEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhl
cikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsg
fSwKQEAgLTQ0Miw3ICs0NzksNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVE
YXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
ICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6
ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDY2LDE2
ICs1MDMsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBj
b25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Ojpk
YXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQ
cm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4g
ZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6
ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhv
bGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoKCk7CkBAIC01MDEsNyArNTQzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAg
LSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDM5
NTNiMTEyYmIxMTA3NTBhN2NiMTc0M2E4ZGNkNzcyNDdhZGExYWIuLjQ3NDY2MGM2NzQ1NjI3MzNk
MWM4MWY3YzU0NzRlOGQ3NmFiNGVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNjIsMTQ1ICs2MiwxMjggQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEg
d3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBj
YW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJp
bmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21l
bnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVE
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7
IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUo
KSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAg
fQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0g
ICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRl
cz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAj
ZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRz
IHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5Lgot
ICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3Rl
YWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24g
YW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAg
ICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8g
U2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRo
ZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBz
aGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3Jl
YXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXpl
KCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAg
ICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNp
emVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxs
b2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAg
ICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1
bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OworICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJv
dmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92
aWRlcikpIHsgfQogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92
aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wg
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
RGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWlu
dDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJ
QikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVu
dChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1t
dXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworfTsKIAotICAgICAg
ICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhICYmbWFwcGVkRmlsZURhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiAmJmJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiAmJnZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciAmJnByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0Uo
Rk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRl
TlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIp
Ci0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBH
UmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CiAjZW5kaWYKKwogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVk
T3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjA5LDUzICsxOTIsMTcxIEBA
IHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVu
dFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVu
ZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRC
dWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3Np
dGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKTsKKworICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhcigpOworCitwcm90ZWN0ZWQ6CisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50
czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwog
I2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyop
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1h
cHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0
ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJl
dHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBW
ZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwot
Ci0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9y
IG1fc2VnbWVudHM7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRh
KCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBp
cyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRl
bnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
IXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2Yu
Li4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxE
YXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgQVNTRVJUKGJ1ZmZl
ci0+aGFzT25lU2VnbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAq
ZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6
WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+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
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgY2xlYXIoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAg
ICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY1LDIxICszNjYsMjEgQEAgaW5saW5lIFZlY3Rv
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
ZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjA1ODA1OTNhMjZiZDdmYmY4MGE4YjQw
OWJhZTQxOTg3M2M1MmQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChD
RkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEp
fSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4
MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIw
MmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmlu
Zz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQ
TEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhT
aGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRh
OiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBu
Z0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUo
KSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEp
OwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBl
V2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3
YmJmMzY0YWJmMTgzOGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3
NWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0
aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAg
IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5T
VUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2
MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9u
IHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21l
bnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNV
SW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBw
ZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nh
c3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25l
U2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1f
c2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6Zmls
ZVBhdGhdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRh
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJj
ZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0
YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAog
ICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNy
ZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNp
emU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzEx
ZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3Nzgw
M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVj
dD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNP
TiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmlu
ZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjJhZGRlZTdlZThi
NGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlm
IChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAg
YXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0
YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3Vv
dXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRh
LnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUg
PSAwOwpAQCAtMTk2LDcgKzE5Nyw3IEBAIHN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZp
cnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAg
Ly8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlmICgh
a2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAgIHJl
dHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7
CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0
byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkg
PSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5
SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmco
KS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5s
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwog
fQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5p
dERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJ
ZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJh
eTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xs
b3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURz
LiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2Yg
dGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJ
ZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRh
KCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5p
dERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShr
ZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmlu
ZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRh
Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7
CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFh
MGM1OC4uMDQxZGRmMDFhZjEyYTM4Zjc2NDg0Mjk4YjFkZTA5YTY3YzQ1OGQzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRB
cnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2Rp
bmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVy
KCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWdvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1Yzdl
ZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgz
OTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJv
b2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4
ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2Zm
ZDU5OGY1MDA4MjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJH
bGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29k
aW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZt
X3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJp
YW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlm
YzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1Yjdh
MzFmZjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGli
KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhk
ZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9y
aWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkp
OwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9u
dENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBj
dXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNl
RGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4u
ZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVG
b3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAg
IFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0g
T3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUx
OTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNy
ZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUg
d2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250
RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQw
OGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5
ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1f
ZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkK
ICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEu
LjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2Rl
bD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3Ry
aW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0
OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRy
PE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVs
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2
MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
bV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
LCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsK
IH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSks
IFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpj
cmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3
M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
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
YXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFj
NGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwx
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVy
IGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09G
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdP
RkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50
IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhl
cndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQu
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZl
ciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBz
dXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRy
dWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxz
LAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRh
OS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRp
YyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJh
c2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZl
ci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVh
MGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJl
ZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBj
b250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAg
ICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5h
bWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlk
ZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERB
VEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNO
YW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
aW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0
cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBb
TlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3Ry
aW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJv
cjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheSht
X2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBk
YXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQ
QUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElk
ZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAg
ICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
UEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0
aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5n
IHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMu
Zmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAg
ICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRl
bnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVu
dEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAK
ICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFj
ayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2Vz
cyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRL
ZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5
YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1Zl
Y3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0
YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNl
c3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBA
dHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVu
dGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAg
ICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3Ig
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7
CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAg
ICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRv
JiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9
IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlE
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwor
ICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAg
ICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
cGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAg
IHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAt
MTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChh
dXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAg
ICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmly
c3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92
ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
bmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
cjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdCht
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3
NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1Njhm
ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
QEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2Fk
ZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9u
KFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107Cisg
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxv
YWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3Nl
dCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9u
SGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAt
NjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0
YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0Fs
bERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4
M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0
YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3Bh
cnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkp
CiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxh
Z3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgK
aW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uNTgzOGU0OTM3
ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMq
IG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4g
bV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYy
NDdmMC4uYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAt
MTYzLDcgKzE2Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIm
IG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
PiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTMsMTEgKzIxMyw4IEBAIHZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogCiB2b2lkIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1f
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJl
ZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0
KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3Bh
cmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVl
c3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAg
ICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVz
dC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRG
aW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2Fk
aW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsK
ICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdk
NGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjExZWEyYjYxZjkyN2FmYmM1MDRiZDc0OTE2MzQwNTQw
ODI2NDFiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCw3
ICs1NzAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRl
IHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhl
IFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3Mg
YWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywg
ZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIu
Z2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAg
Q0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vs
c2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZm
ZXIuCiAgICAgZGF0YS5yZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3
MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0
ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFBy
b3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0
YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICBy
ZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4
IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlm
MzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJl
ZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAg
IGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0
YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2Nzlk
MmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2
ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0
Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmpl
Y3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250
VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0
YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0
NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjA1ZTQyMWZlZmUyZjcxYzZmNDU4N2I2ZTg0YWRh
YWIwMzRiZTc5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIy
LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29u
c3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWdv
dXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJu
IENvbnRpZ291c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJl
YW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5NTY3YzAzMjUwYmQyNTcuLjk0NGM3
MWU3MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50
U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQg
bWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRy
PEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
YmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNm
NDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBG
b250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRp
b24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZj
cmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNi
YWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAot
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAz
ODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAz
MTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFn
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1
ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2
MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0
cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6
TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGlj
c0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90
IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGds
eXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkp
CkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJh
Z2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0x
MjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAg
ICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3Bl
blR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBz
dHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3Jk
J3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2
YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJl
Y29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3Ry
dWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAg
ICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8
R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVj
dCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQx
NiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENv
bnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVy
dGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNh
bCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24q
IG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50
MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0
LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRz
T2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRo
Q29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1h
dGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIw
LDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFu
dHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7
CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJm
YjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQz
ZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyAr
NDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVu
VHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNp
dCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJM
RShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYg
VVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTVi
MzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJ
RDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwg
Y2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykp
IDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29u
c3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsK
ICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+
JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRp
b24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyAr
OTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUo
KTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAg
ICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9u
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3
ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhf
dCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENv
dmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAg
IGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJ
bmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGgg
Z2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dp
dGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENv
dmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkz
YmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1
YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBm
b250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUg
IT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAg
ICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0
YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09
IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFk
MWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwx
MCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJk
IHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0g
Y29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRh
W2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRl
bnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmli
dXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRh
OwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25z
VG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0
LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNs
aWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkp
CiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5
cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZElt
YWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1
Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYw
OSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQ
T1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAq
c2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8g
ZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBp
ZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlw
ZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5
cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0
ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3Ry
YQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChk
YXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJp
YWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBs
aXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUg
Y29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9w
LCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQg
d2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0
aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50
ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAK
ICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0
QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
cGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdh
NGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4
Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJl
dmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9u
c2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxl
Z2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEy
ZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBO
U0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7
CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1
cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVi
b2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAg
ICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4
LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgw
ODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpA
QCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0
cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVu
dERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVU
SSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdl
YkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpj
dXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVy
biBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkx
ZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0
cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0Rh
dGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7
CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAt
MjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hT
ZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXpl
ZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09
IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlw
ZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAt
MjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAg
ICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9y
VHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5n
ID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewot
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3Vz
dG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6
ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JU
eXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3Jp
dGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAg
LTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBh
c3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAq
aXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtp
dGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhk
YXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0Rh
dGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0
ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAg
ICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBs
YXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6
OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRj
OTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNk
YzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFz
c2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxv
Y2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
ZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXgg
OGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEw
MDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAg
ICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIs
IHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJl
IHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBp
ZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwot
ICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9k
YXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUp
OworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2
ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29u
c3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxh
dHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0
ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQz
OTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1
NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAg
IHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFt
ID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGEx
NDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUy
MTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li42YWQ0NmY3OTdhNGJjNzBjODFiNzI5
ZDgzODMwNzFjYTQxOTBkZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00
MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
RGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291
cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkK
LSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFs
UmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAog
ICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpA
QCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAg
ICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBl
bnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdh
aXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25z
ZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAg
IAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwg
c3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNl
UmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZp
bmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDcgKzEwNSw3IEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFz
a0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNr
LCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKKyAgICBhdXRv
IGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZl
ci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBt
YWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0
IGFjY2VwdCBzdWNoIHJhbmdlcy4KQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNp
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
dGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYx
Li42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9v
bCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAg
IGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQo
JyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNl
QXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAog
CiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
U3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXco
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUo
KSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3Ry
aW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMz
Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0
YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3Iu
Y29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNz
VmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5k
ZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIw
ZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3Jp
cHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRv
IHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6
OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQu
ZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJp
bmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVk
U2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNP
bmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVk
RmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09u
ZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwot
ICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3
ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmQxYTc3YjU4YjY0NGE5MGI5MDRlZmRjMWZlYmM2YzA2NzQ0
ZjkyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtNDgsMTcgKzQ4
LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAg
U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQo
KTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNj
cmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5
KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
eyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9i
dWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQu
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04
IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRj
NWQ2NDBkMDRkNGJkNDUuLmU1ZjM0OWI0ODI3NDZmOWVkYjljNWY2MzFiZmFkNGI0MTk5OGJhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVl
U291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkp
CiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkK
KyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9
CiAKQEAgLTc4LDkgKzc5LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lz
TG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7
Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisg
ICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRh
KTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFw
cGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyMiw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5hNjhjY2M2ZGZhOTU1OWRkOWJiNTEwMjZmNTgzYTA5
YjE4NDdhNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQg
JiYgbV9kYXRhLT5pc051bGwoKTsgfQogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQg
eyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29u
dGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFm
Mjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vz
c1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25z
ZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6
OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAg
Y2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwot
ICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgp
OwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXgg
ODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4
ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcg
KzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9p
ZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXpl
KSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVN
YXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5v
KTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIx
ZmJkNDE0MWNjNWUyOWNlOTZiNC4uODZiNDU5OTcxNmVmNDE5ZjVkNGYxNjgyMWZmMDU0MDQ5MTNm
ZDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4
LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwg
bV9yZWFkeVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNw
b25zZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcp
KQorICAgICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAg
LCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJl
ZCkKIHsKQEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlc3BvbnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0
YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBp
bmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRD
b250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBl
KEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRl
eHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50
VHlwZSk7CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNl
VHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0
aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFy
cmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIgPSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PmdldCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAg
ICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51
bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT5jbGVhcigpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQg
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
ODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLjI3ZmMxZjNhOWQ2ZDFlMjhmOTBlNjFiNGNjMWZjZTQ2
NzViMTFiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
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
YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5jbGVhcigpOwogCiAgICAgaWYg
KG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmNsZWFyKCk7CiAK
ICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlk
YXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAz
MDQgTm90IE1vZGlmaWVkCkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2Fz
ZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNo
ZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hl
LT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5jbGVhcigpOwogICAgIH0KICAgICBp
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
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMy
YTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAg
IGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThm
NTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6
UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9y
bWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5y
ZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29u
c3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShj
b25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6
Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0
b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9
IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJv
ZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5z
aXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEz
OWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2
ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEs
MTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25z
dAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7
IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIp
IHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+
KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAg
ICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0
MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLjBkZTNkMjFlMDA3ZDk1YWU3MmMzMDI3NTFjMDc0N2Fj
ZmY1YWM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcg
KzQ2LDYgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNh
Y2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBt
X2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTEwOSw3ICsxMDgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwog
CiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY2xl
YXIoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlv
blN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjcsMTAgKzEyNiwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRQogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAg
ICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgog
ICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAq
IDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZm
ZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY2xl
YXIoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
CiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2Fj
aGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIGJ1ZmZlci5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAg
ICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4K
ICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZh
dWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdU
Rk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUy
YWY4ZWZlLi42NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBt
X2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
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
Y2I3Li5iOWZlMjMxMWI3YTI0NTg1YjIwZjdjYTBkNWYyYWNlMDFiZDM4ZjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVh
YmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAg
ICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3No
YXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4u
MTU1ZGU3ODIxZGZiZmYzNDI5MjI2YTNlODNjZjY5M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEvU291
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
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDEzICszMDMxLDIzIEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0
IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpAQCAtMzA5NSw3ICszMTA1LDcgQEAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMz
YzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQs
NyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xh
c3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29k
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApp
bmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEz
ZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lk
IEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZh
OTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZj
YWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBl
cjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDgg
Kzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNF
bmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7
IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNs
b3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXgg
M2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcw
NmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9u
KTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0
aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+
KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5
MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5
KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5l
cmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBw
ZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAg
ICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVk
RGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5
YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQp
X3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdo
dAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0
LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hs
aWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGln
aHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpo
aWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpy
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdo
dC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9
PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4
NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4
Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRk
ZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAw
MDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1v
cnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXpl
KSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3Vu
dCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShi
dWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNP
ZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291
bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdl
Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
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
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUz
YWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2Fl
YzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4
LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5n
IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hu
b2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUx
ZDgwYzE2YmQxLi5lMmZmZmFhNjU0OWRmNDg3Y2E2NDFiODUyNzEyNDYzYjJhZGE5NGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiAr
NTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUo
cGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAs
IG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNT
eW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRh
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9z
eW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAg
IH0KIApAQCAtMjE3LDEyICsyMTUsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBk
YXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gbV9zeW5jRGF0YS0+dGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3
YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYz
MWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRl
OwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1Zp
ZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRh
RGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThm
NjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRk
MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBb
bV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnko
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAg
IFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWws
IE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5Zjkx
YmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZv
cm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAg
ICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0
YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGlu
IGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAg
ICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAg
c3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJv
YXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdp
bigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1
NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1l
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9V
SV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0
ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hh
cmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZp
bGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93
U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5n
UmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbQppbmRleCA3ZTkzNzBm
YTMzNjU3NjBkYTA1ZWFhMjdlNTJlYzdmMGJkMjJjZjAwLi42Yjg3MDBkODE5NGY0MDNhZDRkMTg4
MmE3NTk2ZDk2NjFkNDMyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tNb2RlbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9k
ZWxWaWV3Lm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoQk9PTCljcmVhdGVGaWxlRm9yTW9kZWw6
KFdlYkNvcmU6Ok1vZGVsJiltb2RlbAogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVy
biBOTzsKIAotICAgIGF1dG8gYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbC5k
YXRhKCktPnNpemUoKSkpOworICAgIGF1dG8gYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c3RkOjpz
aXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsLmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbC5kYXRhKCktPnNpemUoKSkpOwogICAgIEFTU0VSVF9V
TlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWwuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBfZmlsZVBhdGggPSBmaWxlUGF0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4
IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4
ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQ
YWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZl
SW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxl
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFn
ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVy
LT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGll
bnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmQzMzM4Njll
NGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBh
Zjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQw
LDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hh
bmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hh
cmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
QEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBz
aGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1v
cnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRN
ZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNp
emVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBh
cmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkg
ewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChh
cmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZl
ciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxl
LmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNsaWVudCgpLnNldFByb21pc2VkRGF0YUZvcklt
YWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRp
dGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50
aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
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
ZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVS
TFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hh
cmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJh
bGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRy
PEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAg
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6
OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJl
ZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQu
d2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShk
YXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmlt
cGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3
NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEw
Niw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUo
V2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNl
LmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFk
ZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3Vy
Y2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIz
ODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4Zjhj
OTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3Np
bmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEg
dW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZ
KG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
bV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3
MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uY2UwZDBkMTJjYTBmNWQxMGIxNThiOTBj
ZTE1NmI5NjJkYjc5NDk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5W
aWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdp
biwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAg
ICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVz
dHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhp
cyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAo
IW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICgh
bV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVu
ZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUs
NyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFs
U3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5jbGVhcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0
YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2lu
KSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0
ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9t
YW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJl
YW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQy
LDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkK
ICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2Up
OwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRh
KSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURh
dGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWRE
aWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5z
aXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBm
NmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNo
b3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAg
IC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRo
ZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRk
NjI4YmYuLmRlZDFkZTE5YzE5MjVkMzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5n
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQot
ICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRh
KS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAg
ICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpn
ZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJf
dCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVy
QnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkp
OwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAg
ICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3
MDE4NjAwLi4xMWJiYWRiNDEyOGRmMWM4YjkyZGU0NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZp
bmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUz
M2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRm
MDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVi
b2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0
ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRi
NTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsK
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpV
bmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRv
U3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJj
Y2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTcz
NzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkg
OiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDAp
OwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNl
KCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZj
ODU4MjIxZmVhNDQ3MmUwNTU2ZS4uMjk0YzI0MDcyZGJmZTk3ZDBjNjU3YjljZjhlNjEwYzZhMWI0
YzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMy
LDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJp
ZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JP
dmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZm
ZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhl
IFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmCiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
aXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpAQCAtNDA0LDcgKzQwNiw3IEBA
IHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2Fy
ZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAg
LTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFu
ZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVk
QnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFi
N2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLmVhODk1MmRiNTkxN2Y0MTdmYjY1YTMxOGNmMzdlYzVl
ZWFhZGJhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVl
ZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi5iZmU2MjRkNTE5M2M1MmQ5NjQxNTlmMWVm
Y2RjZDAxMzk0NzAwNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1f
ZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJ
RCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQor
ICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQog
ewogfQogCkBAIC02OSw4ICs2OSw3IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2Uo
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5Yjlj
ZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLjc2ZmZhMTExMzkyYTlkM2I0Zjg1YjU5OGNkNmFi
Y2NlNTE4OGYwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAg
ICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4
IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4
YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1h
Z2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdl
QnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVT
aXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdl
dCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIx
NjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJp
bmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFp
blJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwg
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2Rpbmco
KS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWlu
UmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNT
dHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggZGQ1OWNmYTcxMDZmMDg0NDJlM2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4uOWI5
YTk4NmMwYzk2YTgzYWNmNWI4MjllNzM2MzkwNzE3NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzUsNyArNzczNSw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZl
Y3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2Uo
KS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxl
LmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxU
b0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgp
LnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGln
aHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNk
NzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCku
aXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThk
MTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0
MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgs
NyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9X
RUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsK
LSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzks
NyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1
YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgs
NyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAg
ICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2Mx
ZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3
M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJu
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5
YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFk
OGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDli
MzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgog
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyAr
MjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlw
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUz
MWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3
IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2
MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBl
MTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChC
T09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsK
ICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0g
ICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFT
b3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0
byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9h
ZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5
NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVh
dGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlm
IChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAg
ICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+
c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgp
XTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5t
bQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3
NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCll
bmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2Ug
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9
IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5p
bDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpm
cmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAg
CisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCku
Y3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+
dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAg
IHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVO
YW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNl
LT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtl
bmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtl
eV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVz
b3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEg
KilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9z
dHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwog
ICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODNlZmMy
OGFhZDM1NTQzNmZhYmUxNDFkNzY1ODcwOGEwM2Y0YTQzLi4zNzM3MTE2N2I2NWJhYTEzN2ZjMGUy
YjVlMzAzMTU2YjM0NzFlODQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
MDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBpbWFnZSBp
bnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5
NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLjgzYmY3ZDA0YTRmODUxY2M0MzNkNjMwOGQ0MDcw
OTg5YTJiYTA2YjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MCw1MiAr
NDAsNTEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZl
ci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRh
dGEoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAg
ICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRh
KCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05MywxMCArOTIsMTAg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNo
YXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQi
OwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJs
ZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJs
ZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5h
cHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
dGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAg
Y2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAg
QVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlv
biwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsK
QEAgLTEwOCwxMCArMTA3LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0
MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
dmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1v
dmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTQ4LDE3ICsxNDcsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIg
dXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBw
dWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2Vy
YXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVy
MS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRo
YW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VR
KGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGgg
KiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRh
KCksIHNoYXJlZEJ1ZmZlci0+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
X0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuY2xlYXIoKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0K
IAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3MiwyMyArMjA3LDI1IEBA
IHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNv
bWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9
OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZl
Y3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2In
LCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywg
J2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChX
VEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0
byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKLSAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNk
ZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaGlqa2wgPSBj
b250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGwgPSBjb250aWd1b3Vz
QnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFi
Y2Quc2l6ZSgpLCAiYWJjZCIpOwogICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgp
LCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CkBAIC0y
MDIsMzAgKzIzOSwzNCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZl
ciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykK
LSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICBy
ZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50
KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwogICAgIGF1dG8gYnVm
ZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZl
Y3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywg
J2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0p
LmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoYnVmZmVyMSk7CisgICAgYnVpbGRlci5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEo
KmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRv
SGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9
OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAg
ICBidWlsZGVyLmNsZWFyKCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRl
eCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZiODVlYzYxZDMw
MTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw1MyAr
NDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRh
ICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHko
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdv
cmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRh
Lmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRn
ZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9
IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRT
aXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNV
SW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBi
dWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgp
KQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAg
TlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAg
ICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRv
IGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAg
ICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlz
RXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAg
cG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1
dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAg
ICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRT
aXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBp
c0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGlu
Z11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444935</attachid>
            <date>2021-11-21 18:41:33 -0800</date>
            <delta_ts>2021-11-21 19:24:46 -0800</delta_ts>
            <desc>WIP Combined Patch for EWS</desc>
            <filename>bug-233030-20211122134130.patch</filename>
            <type>text/plain</type>
            <size>444664</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkzOWUyZGE2OTllZDJl
YTIxODIyYzhmYzgxOTE3Mzg2NmM1NzFkZC4uOWZhNTM0NGViMTdlNjZjMmIxYjMwNzJkMDk3NmYx
MWJlNThlY2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2OCBAQAorMjAyMS0xMS0yMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIKKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
Ojpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5
Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJl
bW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVs
dGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNv
dXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENh
Y2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQpOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
OgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50
OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RT
aW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAg
ICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dW51c2VkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGF0YSgpIG1ldGhvZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ODA2YTc0MjlmNWE1ZWVhM2UzZTRhMjQ0MjJmZjEwZjBhYzUwMGE2Zi4uNGQ1NjJkNjVmZmNjMTAy
MmUwMDU5MjQ2MzY3ODgxNTc3N2VkZWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMzAgQEAKKzIw
MjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlT
dG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAg
ICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNo
aXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVz
QW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5z
TWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0
YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tNb2RlbFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGNyZWF0ZUZpbGVGb3JN
b2RlbDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVs
ZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291
cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVs
aXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3Jl
ZW5TdGFuZGJ5IGNvbnN0KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZy
b20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYz
NzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAg
ICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwg
bWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBu
dWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAg
IGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJl
ZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVj
aWZpYyBjb2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVj
b2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0
UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRv
TGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxp
dHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxs
YWJpbGl0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRl
eCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVt
b3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkg
d3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJl
ZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBp
bmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBv
ZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBNYWtlIFNo
YXJlYWJsZVJlc291cmNlIHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAgQSBTaGFy
ZWFibGVSZXNvdXJjZSBvbmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hhcmVkTWVt
b3J5IG9iamVjdAorICAgICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRpbmcuIERl
bGV0aW5nIHRoZSBvYmplY3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgc2Fm
ZS4KKyAgICAgICAgTWFrZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAgIHBsYXRm
b20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGluc3RlYWQu
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZl
SW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51
bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBm
b3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9s
bFRvSW5kZXgpOgorCiAyMDIxLTExLTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gU2VuZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhl
IHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3
YzgzMGE1MjVhZDk1MGYzMzNmNDlhMmUxNWNjYy4uOTE4MGVjZDkzMTM2MjY2OWI0YWQ4ZmFiOTEw
YjI0ODdlZjEzYzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToK
KyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAg
ICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRT
b3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3Jl
YXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgor
CiAyMDIxLTExLTE2ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXgg
ZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMy
NzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6
ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAg
ICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRp
emUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpn
ZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThj
ZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
IChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBV
SUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1
bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlw
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4
IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5
MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlw
ZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRh
OmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAg
ICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBj
b250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9u
ID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0lt
YWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXBy
ZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpA
eyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5
ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAg
IHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6
ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qg
c3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4
N2QuLjg2NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9p
ZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCBy
ZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3Jk
KHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3Bv
bnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFz
a0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5k
bGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1IEBAIHZv
aWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+
YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7
CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3Jk
UG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxG
ZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4
Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJl
c3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3
LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNw
b25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFz
ZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
KyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9w
ZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkp
OwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGlu
Zm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAo
cmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3Bv
bnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNl
UmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAog
ICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0
ZWRDb3B5KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0
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
NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMGIwNWRjNTAzODAxNGYxNzRjMGE4ZmU4MDE4OGRk
ZmM4ZGZlMTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZl
V2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5
Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIg
PSBudWxscHRyOworICAgIG1fYnVmZmVyLmNsZWFyKCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlz
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
LDE2ICszMjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+
YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKK30K
Kwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit7CisgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92
ZShkYXRhKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJldHVybiBt
X2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJy
YXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVmPEJsb2I+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1f
Y29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZl
ciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAg
IHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlw
ZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4
dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21V
VEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApA
QCAtMzgzLDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQ
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
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJk
OTM5NmY2NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFi
N2MxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAK
QEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3Bv
bnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAg
ICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1v
dmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAg
ICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEo
V1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4u
YTE2MDc0N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291
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
YW5kbGVyLmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEz
Li4wMDI3NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNo
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
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2Ew
ZDM3YWE1Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLmM1NDQ0NjllZTc3NjQ5MDgyYTljM2I2ZDUx
OTMxZDhkODAwYTM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAg
IG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEu
Y2xlYXIoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2UpIHsKQEAgLTE0OSw4ICsxNDksNiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2Uu
dmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpAQCAtMTgwLDgg
KzE3OCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsx
OTIsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGEuY2xlYXIoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5k
bGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAxLDcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5M2EzYjZmOTI3ZmYw
NGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNhYmNkZjRlMzFlYzgy
ZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgog
CiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9k
ZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZTExZjA0YjJiMzI2MGY2YmY4NjIyMzdmYTI5ZTkwY2Q1NmM4ZGQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnRDb2NvYS5tbQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
VE1MTW9kZWxFbGVtZW50LmgiCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVs
T2JqZWN0LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL21hYy9T
eXN0ZW1QcmV2aWV3U1BJLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFT
VklubGluZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6Y3JlYXRlRmlsZSgpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBv
bmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCisKKyAg
ICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxl
bWVudDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlz
dHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRp
cmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBh
dGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBh
dGhUb0RpcmVjdG9yeSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmls
ZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2
OC4KKyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZp
bGVOYW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFyRmlsZSgpCit7CisgICAgaWYgKG1fZmlsZVBhdGgu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZmlsZVBhdGgpOworICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOworfQorCit2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICBjcmVhdGVGaWxlKCk7
CisKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5zaXplKCk7CisKKyAgICBtX2lubGluZVByZXZpZXcg
PSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXSk7CisgICAgTE9H
KE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRl
ZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lu
bGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKKworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRo
KSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXplKTsKK30KKwordm9pZCBI
VE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFN0
cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQoreworICAgIGlmICghZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpIHsK
KyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhw
ZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3
IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgW21faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJZF07Cisg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRP
YnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rp
b24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9t
RWxlbWVudCgpOworfQorCitQbGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
YmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmY1ZDcyODUzYWExZmRmMjVjZDMzNTBl
ZmEyYjhjMGY1MTY3NTkwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAo
IW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkg
PSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwg
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5z
T25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1f
Y29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5n
SGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAg
ICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAg
ICAgICAgICByZXR1cm4geyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlm
ICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3Ry
aW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2
MGJhZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZv
aWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAg
ICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxl
bWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkK
LSAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBt
X2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9U
RkJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9y
bURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZl
ciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8
Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBA
QCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAg
ICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFt
X2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFw
cGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwg
bV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+
Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3Ry
aW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29s
PihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYz
NzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIz
Mjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQs
NiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xh
c3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00
Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFz
cyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZh
dGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3Ig
cmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250
cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcy
NGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2Vk
QXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlv
bmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcx
YjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFi
OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBB
cmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0
Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRv
U3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7
CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01
MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVk
aW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRh
Y2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmlu
Zz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAg
ICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBW
ZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBA
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rp
b25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3Ry
aW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBm
MzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2Zjhk
ODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0
cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFi
Li5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2
b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRn
ZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERh
dGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9y
QXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7
CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBh
cmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3Vy
ZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVj
dDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0
cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcs
NyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+
JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQg
RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBl
bGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5
OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVu
dChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUg
PSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAg
IGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAg
ICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAg
ICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkpOworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVi
b2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0
ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJv
bVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hp
dmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdl
dCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9y
RGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRp
dG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6
OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
W3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0
OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2
N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZl
cnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1
cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNv
dXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1l
VHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAi
dGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+
ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5h
bWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcg
KzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9y
VVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2Up
IHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNv
dXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNl
LT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVu
YW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1
Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVX
cmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFn
ZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZElt
YWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAog
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2
YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVk
NjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJh
bWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5
cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVt
ZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmlj
aENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBm
cgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNv
dXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVu
ZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlm
ICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50
SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1p
bWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdl
IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8
SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5h
cHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291
cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7
CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2
ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNh
blNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVz
b3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5S
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAg
ICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9u
TnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShG
cmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNo
aXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0
IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1M
KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlm
ICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0g
eyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBz
dWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFy
Y2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1
dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0
aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVk
LCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRS
ZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFt
ZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50
QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgp
KTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyAr
NjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRv
IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5n
ZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdj
Njc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5
MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2Niwx
NSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUq
IG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldElu
c2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNo
aXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5n
ZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2Ug
dG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYg
d2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBp
cyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8g
c3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNk
ZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2
LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVM
aW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBw
cm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBE
aXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1l
KSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNl
dHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShz
ZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAg
ICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1
XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYs
NyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRC
dWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTog
SW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBp
ZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBs
YXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdo
ZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2Nzdj
NWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi45OGNhZDNlMjczMmI3NGM1OWIz
MjNiMWM5NDhjOGY2ZGU3Nzk4ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEw
MDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNl
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAg
ICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisg
ICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQog
ewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRh
QnVmZmVyLT5jbGVhcigpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgx
LDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4g
bV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29k
ZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIg
PSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAg
ICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRy
dWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZl
ci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0
YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkg
LSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1
OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywxMCAr
MTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVz
cG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGlt
ZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAg
IHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBt
X21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVy
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmlj
YXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2Nh
Y2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEy
ODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3
NGYyNzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcs
MTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAg
ICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERl
Y29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2Rp
bmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZs
dXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNv
ZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2Rh
ZmU2NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMy
ZDM3ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIg
QEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZy
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIElu
c3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVz
dWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVu
dCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZm
ZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1
cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUs
IHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEz
YTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMx
YjUwYTVhMjIwZmU0NGIxOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291
cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJl
c291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEo
KSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZl
ZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBi
bG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlh
N2ExYTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAog
ICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJv
bFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRl
ci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9
IGxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggYzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTVi
YTQ5MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2Fk
ZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9h
cmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0
byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJz
ZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2
ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0
ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1f
ZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5k
YXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFy
c2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291
cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2Fk
ZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERv
Y3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBm
cmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNl
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURh
dGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEt
PnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcw
NWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBG
cmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQ
dHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFy
Y2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJl
ZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJz
ZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJz
ZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2Vz
Q2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2Rh
NGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRU
aW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1
ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRi
YzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2
MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdn
ZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFs
IHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0K
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5k
aWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAg
ICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRm
N2I3NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQog
ICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJl
cXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NF
UlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBv
bGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVy
UG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcg
KzMxNDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShu
ZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRl
clN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIs
IG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0
YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNv
dXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAg
ICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291
cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEw
ZTE1MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xh
c3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291
cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0g
Y2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VM
b2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBS
ZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9u
YWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZv
JiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2
ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYg
PSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uMjZkZjJmNmFm
MmUyNmY2NGIzODVkNDgzOTc0ZGI0Njk1NGFkMzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lU
SF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291
cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAg
ICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5s
b2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsg
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9h
ZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5
OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQog
ICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7
IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEt
PmNsZWFyKCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0K
IApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJp
bmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBS
ZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2Uo
KQpAQCAtMzM0LDI0ICszMzUsMjMgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAo
bV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRh
IHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAg
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYg
KGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1f
cmVzb3VyY2VEYXRhLT5jbGVhcigpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEt
PmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0
YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+
Y2xlYXIoKTsKKyAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKIH0KIAogYm9vbCBSZXNvdXJj
ZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NzEsNyArNTcxLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29t
cHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3Rp
Y2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAg
ICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6
OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29k
ZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50
PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQy
MTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li40MDY1MDFlZTUzMTVhODY4NjExZWVjZTI2YzE5NDY5
NTVlMWU3OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFt
ZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7
CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxv
YWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVy
KiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJl
c291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVy
KCkgY29uc3Q7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVx
dWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAv
LyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VE
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsK
ICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgK
aW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uNjFjNTIyMjRi
MDllNWNjZmEyZmI0MzZjNTdiYjliMGRiYjZhNGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAg
IFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2Fz
dDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkgeyBtX2RhdGEuY2xlYXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9u
c2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBV
UkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5
ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAz
MTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgp
Lm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4
IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1
ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsy
NTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNl
KQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJv
bVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8g
RklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBT
aGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5w
YXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9u
b3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
ZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlm
ICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3Vy
Y2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFj
a1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRz
IGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0
aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3Ig
ZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQg
bm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQs
IGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0y
OTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJh
Y2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2Fj
aGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVz
cG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGll
bnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAg
ICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJl
ZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJj
ZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2Qx
NjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5
MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hl
OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAg
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBA
IC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJy
b3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBi
b29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
KyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNo
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVm
OGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThj
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNw
cAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFmZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZj
OWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwK
IAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgbV9h
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5
MDI0MGE1MjBiZDMwZTYzNjU5NS4uYTgxZjJkMzRjNDllYzg3NTFjMGE5NWZhZGJkNWY4NmUwNzQ2
MGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNv
dXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAg
ICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7Cisg
ICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1l
bnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3OCw3ICs4NzgsNyBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1
cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAo
IWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOwor
ICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQo
cmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQ
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
IlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5
NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1
ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJh
OWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVl
dFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVy
biBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0
ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2Yg
bWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQog
CiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQog
CiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
Ly8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUg
c2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNv
ZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkK
KyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIg
dGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRl
bHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCAr
NjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRl
SXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRp
ZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYm
IGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAg
ICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykK
IHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsg
JmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShi
dWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAs
NyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9j
bGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5l
eHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0
YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQ
bGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNy
ZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250
Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xs
ZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMx
OWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUg
dm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0
YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNp
emUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIz
LDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29u
c3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VE
YXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRl
cnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShX
RUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBE
RkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNG
RGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2Fk
aW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9l
cyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApp
bmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5
NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJV
cGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVk
RGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODcz
MWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6
ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRh
U2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlz
LT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRh
OwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1l
bnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOGI4M2U1MzMxOTBhNzc2YmE4
ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3NTRlMTliNzU1YTljYWM1NzRiZTgy
ODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6
OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVm
ZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAh
PSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZl
ciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNj
MTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzEx
ZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxv
YWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcg
LyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBA
IC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJl
c291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwog
CiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8v
IFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcw
Nzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZh
MDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRl
IGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJl
bnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1l
bnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5j
cHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQz
NzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENh
Y2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0
aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5z
ZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNv
ZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNo
ZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRG
YWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChh
dXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29u
dmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJu
YWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVs
ZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1
ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6
CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1l
bnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQq
IGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9l
eHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3
NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0
ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0Ojpz
Y3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
aW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0
NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVk
VGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOwor
ICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3Vy
Y2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0Nzky
ZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRh
NmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4
NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVk
VVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9u
aXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6
OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxD
YWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBE
aXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNl
ZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00Miwx
MyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9m
IHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNo
ZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlz
a0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0Nh
Y2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJl
c3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNo
YXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VH
ZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAK
IHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBA
QCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVj
YW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJl
c291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2
b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0g
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVx
dWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
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
YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjliYTFkMTJiNGIwYjM3MjAyMTU0YTViNzQxMjYzNmNjMmU0
OTE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZl
cnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExl
Z2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRl
ciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1f
Y2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUo
KSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBs
b2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVy
LmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3
NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5mYWRlZjA1MmVmMjMxMjJkMjYz
MTIxOWYxNzJmOWNhOTA5NTQ0NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAg
LTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRh
dGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdS
ZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1
MzVjNjMyZDlkMmRhYzkxM2VmLi41ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTVi
MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmlu
ZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBo
YXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAog
ICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3Nl
IGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8g
aGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNi
NDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRh
IHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUz
YTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZi
NWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVh
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFy
ZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFX
aXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFy
ZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQg
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2Fk
SW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwog
ICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVE
YXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAg
IG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09
IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAg
bV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2
MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5p
c2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBl
bmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4Zjcx
YjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBh
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
ICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4
LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5
cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBT
dHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUo
Y29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5
Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYp
OwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNl
Y2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmln
aW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlh
bGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBl
bmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmlu
Z0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZl
cigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAy
YmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVh
YzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
OyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4g
PSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3Rv
bURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0
ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyBy
ZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYy
NjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJi
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBA
IC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyAr
NTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRU
ZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2Ux
ZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVi
bGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmlu
ZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVz
OwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAg
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJh
NjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3Ry
dWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFz
dGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJv
YXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2Fm
ZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJ
bWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5
ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJjMTgz
YzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6
OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZl
cnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdl
dCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmll
d0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQm
IGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygq
dGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQo
Y2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgq
dGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3NmY1
OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00Myw2
ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2Vk
NWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFj
aG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgs
NyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNDc1NDJkYWNh
ZWI4NmE1YzNhZTg4ZmViNGRmYWY0NDlmYzNlZmMzNS4uNzRjYjRiMDg0YmVhN2M3N2YzZGI4MDVk
Y2I0YjNiMDhhMjNjNjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRh
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1f
c2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0
LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAg
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZl
cikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0p
OwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxl
TWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBp
bmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1v
ZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
cgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21i
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBh
bmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMg
b2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhu
XjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZElu
dG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8
PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICBy
ZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9j
YXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkp
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBp
ZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBh
dXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXpl
KTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVCht
X3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEp
KTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApA
QCAtMTc1LDYgKzE1MCwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNv
bnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNo
YXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9v
bCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOwor
fQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSgpKSwgMSk7CkBAIC0xOTYsMTAgKzE4Niw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2Fw
YWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVu
dC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVu
dC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBA
IC0yMDcsMjMgKzE5NiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3Iu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAg
ICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
IH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQog
ewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgYXV0
byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAg
ICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAg
IG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIyOSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAg
Y2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUo
KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAg
Y2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24s
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JF
YWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
KT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAt
MzIyLDggKzMwOSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVm
ZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAg
ICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdt
ZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI1
LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNT
RVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVy
LT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAg
ICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5j
b3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2Rl
LCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNl
RmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1h
cHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAg
ICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQor
ICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1
aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3Qq
IERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5NCw3IEBA
IGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJv
b2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0MDUsNyBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rlcigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NTksNyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ3
OCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50
KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlv
bldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5z
aXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzUwMiwyMSBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBj
b25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBj
b25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAg
ICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtz
aXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJh
Y3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUw
MSw3ICs1NDIsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3
Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uYzc0NTk3MDU2NTZhY2ZiMTQyMjJmYmMyMjkwMDNjMzA4
M2YyYmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC02MiwxNDUgKzYyLDEyOCBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRh
VmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0
YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2Vk
IGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxs
b2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQot
ICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisg
ICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9V
TkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChO
U0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgot
CiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0
ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYK
LQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENh
bGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGlu
dG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0
aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhN
RTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVt
IHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90
PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+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
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQotCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlv
bjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+
IHNpemU7Ci0gICAgICAgIH07CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVy
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0Uo
Q0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAj
ZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0g
ICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Cit9OwogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCAqZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciAq
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgJiZtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ICYm
YnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+ICYmdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyICYmcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKworI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
TlNEYXRhICopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQg
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3Vv
dXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHko
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6
ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDksNTMgKzE5MiwxNzEgQEAgcHVibGljOgogICAgIHVz
aW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+
OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAg
Ym9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNP
bmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1l
LCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdl
dFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAot
ICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29u
c3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29u
dGlndW91cygpIGNvbnN0OworCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNlbmRp
ZgogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKK3Byb3RlY3RlZDoKKyAgICBEYXRhU2VnbWVu
dFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNo
YXIqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKTsKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAg
IHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0OwotCitwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50
byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotICAgIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUg
RGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gdGFrZURhdGEoKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBi
b29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5
IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVi
bGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBj
b25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19z
YW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRh
dGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1h
cHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdU
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+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCBjbGVh
cigpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAg
ICAgICBjbGVhcigpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJu
IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
ZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjUs
MjEgKzM2NiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFj
dERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBw
dWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhS
ZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
LSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIo
KSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZl
MmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVu
dFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdv
cmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
RGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93
UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhk
MDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0Yzdj
OTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsK
ICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEy
NmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5
MS4uMDU4MDU5M2EyNmJkN2ZiZjgwYThiNDA5YmFlNDE5ODczYzUyZDE0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdl
dExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4
ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEs
MTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVu
c2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRp
YyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVz
aW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNr
KCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcm
IHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAg
YXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpp
bmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4
MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBA
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3Jl
U2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNl
Z21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdt
ZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRh
U2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZToo
TlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1
ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdt
ZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50
ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9z
aXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQm
KWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVn
ZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNE
YXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1S
ZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFp
blB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNv
bnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51
bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0
dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5Q
dHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFT
ZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmlu
ZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4
ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2Ug
dGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChp
ZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFs
dWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5
OTIxZmNjMGZlZDJlZC4uMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDczNDNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0
YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwor
ICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWdu
ZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xOTYsNyArMTk3LDcgQEAgc3RhdGlj
IGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIAogc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRz
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlk
czsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVk
IGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlk
IENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAg
cmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIy
NCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRh
dGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChq
c29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOwor
ICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGlu
aXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0
eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtl
KCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0
byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEy
IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgog
ICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMg
dGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0
aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5
SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1G
YWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0
MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li4wNDFkZGYwMWFmMTJhMzhmNzY0ODQyOThi
MWRlMDlhNjdjNDU4ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6
RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ291c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIo
KSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4u
NTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92
ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi4y
NDZiYjBkNTMxYTk3ZTIwNWVkNTZiOWEzZmZkNTk4ZjUwMDgyNDllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFu
dEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jMTVkOWZm
MzUwYzIyNmJjMzUxNDIxOTQyZTUzODViN2EzMWZmOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWdvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRl
eCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjcz
ZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9u
dAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGlu
dGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwg
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBG
b250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAg
Ym9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2Vh
ZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRm
ZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04
NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZp
c2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsK
ICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3Jp
Z2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0g
SW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9
IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMw
ZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFl
ZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJm
YWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNl
cHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVy
IGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7
CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1J
bkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJl
c291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjky
Li41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2Rl
bDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3Zl
KGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpN
b2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitN
b2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21p
bWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1
ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQx
Y2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBA
IC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVS
TCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
fk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJM
KTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3Ry
aW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAg
VVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlw
ZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9k
ZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1
cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7
CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0
MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5
MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtX
b2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1
ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwog
ICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQs
IHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAg
IEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1
ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBz
dGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3Qg
dmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0
NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBv
ZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
cml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAg
ICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBA
QCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQog
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgq
YnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNl
CiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFl
MzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3
ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZp
bGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8g
UmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihT
aGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAog
Ly8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3Vs
ZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lv
biByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0
aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
OwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVu
dCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252
ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252
ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRv
IG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0Yzdj
OTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2
ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0
cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2Yg
dGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
dWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpT
T04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXgg
ZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2
MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAg
LTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUg
cm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owog
CiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIg
KzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+
IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRh
dGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0
YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNl
IGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1l
KCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJ
UlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUg
PT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJp
bmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5p
dERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAg
ICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNP
Tk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNP
TldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAs
NyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVk
U2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0
YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAg
ICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0
KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgs
NyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAo
IXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2Fk
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAg
LTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIn
c2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVu
dFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9u
c2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25z
ZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVx
dWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVu
dEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1
NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5
UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBp
cmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVu
ZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIu
Z2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nl
c3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
ZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3Ig
KE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjph
cHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpA
QCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0g
bV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1w
dHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlm
aWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAg
c3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAg
ICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+
ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJr
ZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxv
YWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdl
dCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92
ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3Qu
dmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JS
ZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVu
dGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1v
dmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJy
b3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShr
ZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVz
dERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBA
IC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9
IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBr
ZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBA
dHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVu
dGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmlu
ZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRm
OTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2Rl
ckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZl
clJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAg
ICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpj
cmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAg
IFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgp
IHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktl
eXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0
YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07Cisg
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFS
ZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4
IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2
OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRG
bGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJl
ZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBB
cHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVh
bURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRh
RGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRi
ODhhNTM5ZGZkNTNjYmUyLi41ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNz
ZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjEx
MDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5iNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1
YTA3ODIzMTgxYWNhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMywx
MSArMjEzLDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hl
ZCgpCiAKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAg
aWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAg
ZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyPiB7CkBAIC0yMjgsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM1
LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERh
dGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6
OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAg
ICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwog
fQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVlc3QgPSBb
bV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMTFlYTJi
NjFmOTI3YWZiYzUwNGJkNzQ5MTYzNDA1NDA4MjY0MWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjUz
LDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAg
dXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0
ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlm
ICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlw
ZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAv
LyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0
bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAg
IC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBD
RkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAv
LyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VV
cGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2
ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3Zp
ZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBkYXRhLnJlZigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3
YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApA
QCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWRE
YXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQog
ewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENG
KENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0
OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFl
NzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3Ro
ZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0
YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lk
Kiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1
ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEu
LmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0
YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVj
aygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAg
ICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJs
ZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1
cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEy
NzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0
ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAg
ICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlf
RmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0
YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19N
ZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBl
RmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVh
MmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2
MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNo
YXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2Us
IGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0
RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNl
ID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVT
aXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5B
QkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1
ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjA1ZTQyMWZlZmUyZjcxYzZmNDU4
N2I2ZTg0YWRhYWIwMzRiZTc5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00
MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVj
dG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1Jl
ZjxDb250aWdvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7Cisg
ICAgcmV0dXJuIENvbnRpZ291c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9v
bCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5NTY3YzAzMjUwYmQy
NTcuLjk0NGM3MWU3MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZl
cihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFl
NzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAg
IHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywg
b3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdN
b2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVD
RkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3
MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4Njlm
NzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRh
OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4
M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBm
N2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgs
NyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BE
RkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JD
dXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5
OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFm
ODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJh
Z2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBP
cGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBh
cmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAg
ICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNv
dW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9u
W2NvdW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVX
aXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdl
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAg
Y29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
byhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZz
ZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2Ug
ewogICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBn
ZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5
cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lk
IGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsx
NDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJp
YW50UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRT
aXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
R2x5cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
dmFyaWFudENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEds
eXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0g
bWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZv
aWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9w
ZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAg
dm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zm
c2V0OwogICAgICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRh
dGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3
IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBo
Q291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3Vu
dCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25z
dHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5
cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3Vu
dCkgKyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0y
MDQsNyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0
aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3Rh
bnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZz
ZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0
KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1h
dGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBN
YXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFu
dHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5k
ZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJl
NWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApA
QCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAog
I2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0
aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVy
OwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRo
Rm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMw
OTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4
NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50
MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhj
aDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMy
X3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3Qp
KGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
VGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0g
MSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShj
b25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50
ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAq
IGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBw
b3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBp
ZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAg
IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQ
dHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAg
ICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+
KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkp
CkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAg
c3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5U
WVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVj
dGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYg
Y292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFn
ZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAg
ICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAx
OiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYz
MDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6Okho
ZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFi
bGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9y
IGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFn
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAo
IXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFi
bGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihi
dWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBi
YTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4u
NDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAg
ICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7
CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAg
ICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0
YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNl
bGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVh
YThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAz
OWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VW
ZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5T
RGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29u
dGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29u
dGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYg
KGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hp
dmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsK
QEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0g
ICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXll
ZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVj
dDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisg
ICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXll
ZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVj
dDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEs
NyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNv
bnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAo
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1U
b1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJk
LmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRv
JiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNp
emUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBl
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tp
XV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07
CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZElt
YWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1F
VHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlz
RGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0g
VVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRh
ID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1F
VHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1
Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBv
CiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RF
QU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0
ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRh
KS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAg
ICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0
PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkg
fHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAg
ICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlw
ZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3Au
CiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fu
bm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJl
CiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFu
ZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJg
CkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlw
ZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5T
SW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51
bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3Vu
dF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDow
XSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQw
YTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYz
ZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3
Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3
Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAg
ICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJl
dmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwg
bV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3Zp
ZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29u
dmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1
OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJi
ODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJ
bWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGlj
IFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBl
LCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0
ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAg
ICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkp
IHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAg
ICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAg
ICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAz
NTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0
YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2Fy
ZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250
ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50
LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSku
Z2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
ICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShT
dHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5s
ZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSku
Z2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3Mjdh
OGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMp
CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFG
b3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNv
cHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
ZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+
IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7
CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAg
ICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChh
dXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0
RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikp
IHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYg
KHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3Vz
dG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21f
cGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICsz
NDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJv
YXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBk
aWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAg
ICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5n
IHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUg
cGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAg
ICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgog
CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAg
ICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJv
YXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
aW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uNWVkOThjNDEz
MGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTExNyw3ICsxMTcsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExv
Y2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlv
Rm9ybWF0RGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0
ZjM2YjdiNTNmNS4uYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9
CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGlu
ZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9k
YXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAg
W21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNTM3
LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVG
ZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6
ZSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBh
dXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJu
IG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBh
dXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFi
YzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZv
cm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNC
bG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1
MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIy
OSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4m
IGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1No
YXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJl
dHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3
YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUx
ODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGll
bnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAy
NDA2Li42YWQ0NmY3OTdhNGJjNzBjODFiNzI5ZDgzODMwNzFjYTQxOTBkZTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZm
ZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJl
c3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwg
cmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1
ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50
OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVk
Q29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3lu
dGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFz
a0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVz
IH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpA
QCAtMTA2LDcgKzEwNSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwog
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdl
IG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhl
IC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KQEAgLTE3NSw3
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
MTMzZTZkYTIuLjc0NTlmZjQ3NmY3MzE5MGNmMTJiNWI4MThlMmZlM2JkNTZiZjZlZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRs
ZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAg
d2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUg
ZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5n
IGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRh
cnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBu
b3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFy
dCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAg
bV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3Rh
cnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUg
ZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBt
X2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwog
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1
Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5
IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEu
LjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgn
ICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VB
cnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAK
IHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBT
dHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgp
KTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJp
bmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5j
b250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRl
eCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBl
N2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlw
dEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0Zjgu
ZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6
ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVt
cHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5k
YXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09u
ZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01h
cHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0g
ICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdm
Mzc5NmI3MWEwNDMxMzRjNjY0Ni4uZDFhNzdiNThiNjQ0YTkwYjkwNGVmZGMxZmViYzZjMDY3NDRm
OTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC00OCwxNyArNDgs
MTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2Ny
aXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHko
KSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1
ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4K
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTgg
ZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1
ZDY0MGQwNGQ0YmQ0NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJmYWQ0YjQxOTk4YmEwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkK
ICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQor
ICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0K
IApAQCAtNzgsOSArNzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNM
b2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsK
LSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAg
ICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBw
ZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAg
bV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVl
NzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5YmI1MTAyNmY1ODNhMDli
MTg0N2E3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJs
OyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRp
bmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiBtX2RhdGEtPmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7
IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250
ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYy
Nzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0g
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
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFm
YmQ0MTQxY2M1ZTI5Y2U5NmI0Li44NmI0NTk5NzE2ZWY0MTlmNWQ0ZjE2ODIxZmYwNTQwNDkxM2Zk
MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgs
NyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBt
X3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3Bv
bnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykp
CisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAs
IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVk
KQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRh
IGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGlu
ZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENv
bnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUo
RmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4
dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRU
eXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VU
eXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRo
b3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJy
YXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
Z2V0KCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJS
ZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAg
IG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVs
bHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmNsZWFyKCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9
IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jl
c3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJj
YTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xh
c3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsK
IGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWls
ZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEw
MzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFs
bG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4
YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYz
MWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4g
Jmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5l
YmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
QEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVN
ZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFS
ZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRl
ci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8q
IHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0
aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4
OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uMjdmYzFmM2E5ZDZkMWUyOGY5MGU2MWI0Y2MxZmNlNDY3
NWIxMWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9u
b3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5h
cHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
IAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwx
MSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpE
ZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RG
TW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAg
ICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
IH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5j
ZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmlu
Z1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmly
ZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJs
ZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAg
ICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGlt
ZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlm
IChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFy
YW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAg
ICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJ
bmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkg
ewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11
bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5n
VGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVy
aW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25v
dXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmNsZWFyKCk7CiAKICAgICBpZiAo
bV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+Y2xlYXIoKTsKIAog
ICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRh
dGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMw
NCBOb3QgTW9kaWZpZWQKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNl
IG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hl
LgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUt
PmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6
ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmNsZWFyKCk7CiAgICAgfQogICAgIGlm
IChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1F
OiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVz
b3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZl
ci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZl
cmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVu
Y29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
QEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAog
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgq
bV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAm
JiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1
ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigq
bV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9h
ZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE1ICsxMjU2LDE1IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1f
YnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAg
ICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKQEAgLTEyNzksNyArMTI4MSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAg
ICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5n
IGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkg
YmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNo
KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQ
cm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHBy
ZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3Bv
bnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNz
aW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFr
ZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNr
IGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRl
ciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2Fj
aGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1
dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
CiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1
MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0
MTViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZv
cm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENv
dW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1f
c3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hl
OjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJh
MjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1
NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpS
ZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3Jt
YXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0
IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0g
V1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9k
eS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNp
emUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5
ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4
MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwx
MCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0
CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsg
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikg
eworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQw
ODAzMTA1NDY4MzUzNmVhMGRjODE5My4uMGRlM2QyMWUwMDdkOTVhZTcyYzMwMjc1MWMwNzQ3YWNm
ZjVhYzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyAr
NDYsNiBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAg
ICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAg
LCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1f
Y2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAK
ICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVh
cigpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9u
U3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyNywxMCArMTI2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAg
ICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICog
MTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZl
ci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jbGVh
cigpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikK
ICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNo
ZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpOworICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgYnVmZmVyLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgog
ICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1
bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJh
ZjhlZmUuLjY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1f
ZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNl
M2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEu
c2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3Zl
KGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYu
LmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBA
QCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYw
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpv
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
UmVzb3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUx
NjQuLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBi
b29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQot
c3RhdGljIHZvaWQgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAq
aW5mbykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJj
ZSo+KGluZm8pLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFi
bGVSZXNvdXJjZURlYWxsb2NhdG9yKCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxv
Y2F0b3JSZWY+IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVz
b3VyY2UqIHJlc291cmNlKQotewotICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAw
LAotICAgICAgICByZXNvdXJjZSwKLSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5V
TEwsIC8vIHJlbGVhc2UKLSAgICAgICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAg
IE5VTEwsIC8vIGFsbG9jYXRlCi0gICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAg
c2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRT
aXplCi0gICAgfTsKLQotICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVm
KCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVk
LgotCi0jaWYgVVNFKENGKQotICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVS
ZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0
aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0g
ICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJl
ZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19j
YXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXIgeworICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0
YSgpOyB9LAorICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+
c2l6ZSgpOyB9CisgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJl
c291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJj
ZSkgewpAQCAtMTM4LDkgKzEwNCw3IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNv
dXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAot
U2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVS
ZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJs
ZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2
LDcgQEAgdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NpemU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZj
YjcuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
U2hhcmVhYmxlUmVzb3VyY2U+IHsKK2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBj
bGFzcyBIYW5kbGUgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5j
b2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0Owor
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAog
cHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5z
aWduZWQgbV9zaXplOyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25z
dCB1bnNpZ25lZCBtX3NpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNm
YTNhMmUxMjA0YzY3N2VjZjg2YWVjYmQxOWJiNjRkN2IuLjE1NWRlNzgyMWRmYmZmMzQyOTIyNmEz
ZTgzY2Y2OTNkNmRhYjQyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNo
YXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
ICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAt
MjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFy
ZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIx
LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6
ZSgpIDwgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1l
bW9yeUJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVt
b3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJU
KHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAg
LTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXIm
IGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rlciwg
VmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAg
ICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
RE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAg
ZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24o
cmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRy
dWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwog
ICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQx
NCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2Rl
cjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVy
KQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkg
fHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRm
b3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
aWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApAQCAtMzAzMSwxMyArMzAzMSwyMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgog
CiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIucHRyKCkpOworfQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYg
UExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252
ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkK
IHsKQEAgLTMwOTUsNyArMzEwNSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAg
IHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29k
ZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1
ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZj
YjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNs
YXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRp
YWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAt
NzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
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
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFi
NjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlm
ICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93
ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQppbmRleCAxNzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUx
ZWM3Li5iYmVmNjY3MzUxYTBhMmJmNThkZmFmNWE3MjEwMDA2YTMxOGVhZjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAg
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlm
ICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKDApOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRh
U2l6ZSk7CiAgICAgICAgIGF1dG8gbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJk
VHlwZSk7CiAgICAgICAgIGRpZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJvYXJkKGNvbm5lY3Rpb24s
IHBhc3RlYm9hcmROYW1lLCBwcmV2aW91c0NoYW5nZUNvdW50LCBuZXdDaGFuZ2VDb3VudCk7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2
MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3
OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAg
IGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5n
Om1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdl
LT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAg
ICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAg
ICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxl
bgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJs
LCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0g
ICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBb
cGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQ
YXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0g
JiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
OihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAg
ICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAg
ICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0g
ZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNG
aWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdp
dGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVy
ZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7
CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bh
c3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5
MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
bnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0No
YXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5m
b3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNz
YXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA1M2JiNmQ1ZGQxMGNiNjM1M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3
Li44ODgyN2ViMjkxMmE1MzRlOTI1YmI1ZmE4Zjk2MjNhZWMzYTEzOThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2lu
ZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVz
cG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5k
ZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZTJmZmZhYTY1NDlk
ZjQ4N2NhNjQxYjg1MjcxMjQ2M2IyYWRhOTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFz
azo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdl
UHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAg
ICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVy
cy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogfQpAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlmICht
X3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDgg
QEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAK
ICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAg
ICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0
YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YSA9IG1fc3luY0RhdGEtPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICAgICAgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAg
ICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVI
YW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBh
Z2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXgg
NmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uYjA3YzE0OWZkNGRhMTVj
ZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1l
SW5mbzsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEx
NSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBt
X3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
c3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0Rh
dGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0Rh
dGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxs
YmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZj
OGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZh
YzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9
IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZl
ZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNhN2NiMGZmM2QuLjY1ZTVk
ODJhMzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VM
KWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGlj
ZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0
YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7
CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9h
cmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QK
ICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1NjUsNyBAQCAtICh2b2lk
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2Ui
LCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3
aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRh
dGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGlu
UmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmll
d10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tNb2RlbFZpZXcubW0KaW5kZXggN2U5MzcwZmEzMzY1NzYwZGEwNWVhYTI3ZTUyZWM3
ZjBiZDIyY2YwMC4uNmI4NzAwZDgxOTRmNDAzYWQ0ZDE4ODJhNzU5NmQ5NjYxZDQzMjBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbQpAQCAtMTI2LDcgKzEy
Niw3IEBAIC0gKEJPT0wpY3JlYXRlRmlsZUZvck1vZGVsOihXZWJDb3JlOjpNb2RlbCYpbW9kZWwK
ICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBhdXRvIGJ5dGVD
b3VudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbC5kYXRhKCktPmRhdGEoKSwgbW9kZWwuZGF0YSgpLT5zaXplKCkpKTsKKyAgICBh
dXRvIGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbC5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9k
ZWwuZGF0YSgpLT5zaXplKCkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNv
dW50ID09IG1vZGVsLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7CiAgICAgX2ZpbGVQYXRoID0gZmlsZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5ZDdiMDk4MWFhN2QzZmNkOWJk
ZTkwZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU4OCw3
ICs1ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZQogICAgIGlmICghc2hhcmVkTWVtb3J5
QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlt
YWdlSGFuZGxlLmRhdGFTaXplKTsKICAgICBwYWdlQ2xpZW50KCkuc2F2ZUltYWdlVG9MaWJyYXJ5
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0
ZWQ5Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3
LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChp
cGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAg
ICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJl
dHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0
YVNpemUpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yNzUsMTUgKzI3NSwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIGF1dG8gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5SW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1l
bW9yeUltYWdlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFT
aXplKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKLQogICAgIGlm
ICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRN
ZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeUFyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFyY2hpdmVCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVk
TWVtb3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihhcmNoaXZlSGFuZGxl
LmRhdGFTaXplKSk7CisgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBzaGFyZWRNZW1vcnlBcmNoaXZl
LT5jcmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgfQogICAg
IHBhZ2VDbGllbnQoKS5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RG
TW92ZShpbWFnZUJ1ZmZlciksIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3Rl
ZEZpbGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBX
VEZNb3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmlnaW5JZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRm
YjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMz
NDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0K
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6
OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6Oldl
YlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2Yzdh
MjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBh
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
LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4
MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQu
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0g
bnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAg
ICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAg
ICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4o
KSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVt
LT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVl
MWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25O
YW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3Qg
U3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFz
dGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9y
bVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3Qg
V2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQz
ZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVm
KCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAg
aWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAg
ICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQg
Y2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNl
U2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNC
dWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250
aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZm
ZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVU
eXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNo
YWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpp
bmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhi
MjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNv
dXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAg
IG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3
YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNo
ZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRl
IFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2Ug
dXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUx
YTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0
d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0
aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIu
aXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNj
MTIzMWE2NzcuLmNlMGQwZDEyY2EwZjVkMTBiMTU4YjkwY2UxNTZiOTYyZGI3OTQ5OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0y
ODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYg
cGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3
ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1l
dGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1f
bWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7
CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2
IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAg
ICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhh
c1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAg
ICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0K
ICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpt
YW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3Ry
ZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7
Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YS0+Y2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI5LDgg
KzkyNyw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAg
IGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6
OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBs
dWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2Vp
dmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhl
IGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3Ry
ZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZm
ZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5z
ZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51
YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIy
NWViMmJkNWJmY2Q2ODAyM2YyMy4uMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2Nk
NjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgog
CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVz
ZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcg
cGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGlu
Z1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBm
ZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5kZWQxZGUxOWMxOTI1ZDM3
YjhkMzkzZTg1ZjY1ZjViNzNhMmMyOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtNzcsMTAgKzc3LDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VE
YXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVp
bGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1f
cmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgfSwgW3RoaXNdKFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAg
ICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIudGFrZSgpKTsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXgg
YjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uMTFiYmFkYjQxMjhkZjFj
OGI5MmRlNDQzYTlkNDZhY2EwMzNmZTBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxv
YWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3Jt
RGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7
CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTaGFyZWRCdWZmZXJCdWlsZGVyLCBS
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
ZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUuLjI5
NGMyNDA3MmRiZmU5N2QwYzY1N2I5Y2Y4ZTYxMGM2YTFiNGM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwg
MCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhf
dD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJl
ZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUs
IHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwog
CiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUg
cGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogICAgIGlmIChp
cGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
ciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7Cisg
ICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUu
ZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCkKQEAgLTQwNCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2kKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihz
aGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIw
Li5lYTg5NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVhYWRiYTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVmZDEz
Yzc1NGUxMC4uYmZlNjI0ZDUxOTNjNTJkOTY0MTU5ZjFlZmNkY2QwMTM5NDcwMDcwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQog
ICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9i
dWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIApAQCAtNjksOCArNjksNyBA
QCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1f
YnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNk
YTg3Li43NmZmYTExMTM5MmE5ZDNiNGY4NWI1OThjZDZhYmNjZTUxODhmMDQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRl
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
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRkNTljZmE3MTA2
ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYuLjliOWE5ODZjMGM5NmE4M2FjZjViODI5ZTcz
NjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBI
aWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAog
ICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXgg
PyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAg
ICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBI
aWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFT
aXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hs
aWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYz
YzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3
M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJh
bWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
YnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMz
MTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsK
ICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICBy
ZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZF
KFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRm
MTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3
NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJl
cHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFn
ZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1p
bWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZj
MzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFj
Y2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJj
NDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIw
MmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQx
Myw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdl
YktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50
ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmlu
ZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTli
ZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZi
ZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4
MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5
cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Y291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5
MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3
ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFp
blJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291
cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3
ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZl
CiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3Bs
YXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBh
cnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0t
PnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEw
ZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0
UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5
dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFo
aXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1
NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3
YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVU
eXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7
Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOwor
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlw
ZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJj
ZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5h
bWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJS
ZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZv
cktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwg
Zm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWlt
ZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtl
eV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJp
dmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJp
dmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBA
IC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5j
b2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIq
IGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNv
ZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3Jl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29y
ZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDMzOGRkZTk3YTNlZDdkYWNhMmUwNGMzMzcyYTdh
NDQ1NjU3MGI3MC4uN2U2NDc2MGQ5MDU0NjIzMzU2MzlhYzEwNTAwMTRlYWViZDFjNmZjZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNwYXRjaCBh
bGwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSByZXF1ZXN0
cyB0byB0aGUgQVggdGhyZWFkIGZvciBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5
NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLjgzYmY3ZDA0YTRmODUxY2M0MzNk
NjMwOGQ0MDcwOTg5YTJiYTA2YjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA
IC00MCw1MiArNDAsNTEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hh
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+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
YnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIo
KTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFi
dWZmZXItPmRhdGEoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEi
LCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVm
ZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0
YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09
IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05Mywx
MCArOTIsMTAgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10g
PSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
YnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5
ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbikpKTsKQEAgLTEwOCwxMCArMTA3LDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwg
J2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVj
dG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTQ4LDE3ICsxNDcsNTMgQEAgVEVTVF9G
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
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuY2xlYXIo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3MiwyMyAr
MjA3LDI1IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywg
J2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9
OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2sn
LCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7
CiAgICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFi
Y2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKLSAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
YXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBn
aGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGwgPSBj
b250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5k
YXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwogICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwg
Z2guc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJo
Iik7CkBAIC0yMDIsMzAgKzIzOSwzNCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29t
ZURhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8g
bWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBj
b250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwot
ICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwogICAg
IGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CiAgICAg
RVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+
YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVD
VF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScs
ICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2En
fSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydj
JywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0p
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2Mn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoYnVmZmVyMSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBF
WFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAw
eDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3Ry
aW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xl
YXIoKTsKKyAgICBidWlsZGVyLmNsZWFyKCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7
CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44YmZi
ODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OCw1MyArNDgsNTQgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJy
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
QXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZm
ZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3Ro
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5k
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
KF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVj
dGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIg
ZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAg
ICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWls
ZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3Jl
YXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7
CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAK
ICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9
IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAg
ICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24p
OworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAg
ICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3Np
dGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5T
RGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAg
ICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQog
ICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0g
ICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAt
IDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEo
ZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVO
U0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJp
bmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsK
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="470065"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444936</attachid>
            <date>2021-11-21 19:03:35 -0800</date>
            <delta_ts>2021-11-22 02:15:55 -0800</delta_ts>
            <desc>WIP Combined Patch for EWS</desc>
            <filename>bug-233030-20211122140331.patch</filename>
            <type>text/plain</type>
            <size>447548</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uMmQxZGQyNzIyYjVlNjhmODAyNjAxZDY5NmRmNWE2
NGYzZGIwMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2OCBAQAorMjAyMS0xMS0yMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIKKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
Ojpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5
Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJl
bW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVs
dGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNv
dXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENh
Y2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQpOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
OgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50
OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RT
aW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAg
ICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTEt
MjEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVn
cmF0aW9uXSBFbmFibGUgYmlkaSBjb250ZW50IGZvciBub24taW5saW5lLWJveCBjYXNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4MDZhNzQyOWY1YTVlZWEzZTNlNGEyNDQyMmZmMTBmMGFjNTAwYTZmLi40ZDU2MmQ2
NWZmY2MxMDIyZTAwNTkyNDYzNjc4ODE1Nzc3ZWRlY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
MCBAQAorMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRp
Z3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpm
ZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1
ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZl
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAg
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
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAg
ICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0
RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2Vi
VVJMU2NoZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1B
Y3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRl
bU9yaWdpbnNNYXRjaE9yaWdpbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbToKKyAgICAgICAgKC1bV0tNb2RlbFZpZXcgY3JlYXRl
RmlsZUZvck1vZGVsOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZp
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENh
Y2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBt
ZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRh
cjovLzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1
ZmZlciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0
ZWFkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhh
biB0b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hl
Y2sgZm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUK
KyAgICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1vdmluZworICAgICAgICBwbGF0
Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50OjpQcm92aWRlciBpbnN0ZWFk
LgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2
ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBu
dWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcg
Zm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3Jv
bGxUb0luZGV4KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBT
aGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6Ly84NTYzNzcyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBk
aXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAg
ICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAg
Tm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4gdG90YWwgbWVtb3J5
IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNrIGZvciBudWxsIHdo
ZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisgICAgICAgIGluIGEg
Y291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6
IE1ha2UgU2hhcmVhYmxlUmVzb3VyY2UgdXNlIHRocmVhZC1zYWZlIHJlZmNvdW50LgorICAgICAg
ICBBIFNoYXJlYWJsZVJlc291cmNlIG9uY2UgY3JlYXRlZCBpcyBpbW11dGFibGUgYW5kIHRoZSBT
aGFyZWRNZW1vcnkgb2JqZWN0CisgICAgICAgIGl0c2VsZiBoYXMgdGhyZWFkLXNhZmUgcmVmb3Vu
dGluZy4gRGVsZXRpbmcgdGhlIG9iamVjdCBvdXRzaWRlIHRoZSBtYWluIHRocmVhZAorICAgICAg
ICBpcyBzYWZlLgorICAgICAgICBNYWtlIG1lbWJlcnMgY29uc3QuCisgICAgICAgICogU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3Vy
Y2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAg
ICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIg
aW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2lu
ZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNo
ZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleCk6CisKIDIwMjEtMTEtMjAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBTZW5kIFdlYkdQVSBtZXNzYWdl
cyBpbiB0aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2ZTcx
YWQzODJlMjdjODMwYTUyNWFkOTUwZjMzM2Y0OWEyZTE1Y2NjLi45MTgwZWNkOTMxMzYyNjY5YjRh
ZDhmYWI5MTBiMjQ4N2VmMTNjNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNp
b25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlv
bjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBk
b2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNl
Lm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAg
ICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1Zh
bHVlXSk6CisKIDIwMjEtMTEtMTYgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNvcmF0
aW9uTGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEw
NzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQg
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6
OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRh
KSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9t
VVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3Vw
VG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUg
PSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0
MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5z
RGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAg
ICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBt
X21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFh
YjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICht
X21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJl
Y3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVz
ZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0
aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9w
ZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMz
YTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsm
XSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9y
bURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtd
IChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggOTA5OGUwNWFmNGM4NDMzYjNkMTNiMzk1NjUwNjRh
OWMxNTQzMzg3ZC4uODY3NTBkZmVlZmVjNTU1Y2FmOWExYmJmODUxMDYwYTU5YWZmMjg5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
c2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rp
b25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAg
ICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RG
TW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhb
dGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEg
PSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+
aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk4LDE1ICsyOTgs
MTUgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3Zl
KGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9k
eShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2Fj
aGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQor
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9u
KCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0
aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMx
Nyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdp
bmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9k
eS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJh
dGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJv
ZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFu
aXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUo
cmVzdWx0KSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAog
ICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0
byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29u
c3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
cmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5
ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODIsOSArMzgyLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVz
dWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92
ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFh
M2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVm
PEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsK
KyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYs
IFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91
bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jk
c0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjEx
YjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
QEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVy
biBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2Fu
IGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0s
IFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01D
YWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJh
NTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01
Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1h
dGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVy
eU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIs
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVR
dWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNw
b25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkg
Y29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2Mzhm
N2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEv
a2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6
OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkK
LSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBm
YzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2My
Nzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVm
ZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5n
dGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1
cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8
QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1tt
X2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZp
cnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFp
ci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92
ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMy
YmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUs
NyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3Jt
RGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJl
ZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUo
cHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3Jt
IGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpA
QCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3Jt
RGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25z
dF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0g
bV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcg
QEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBi
dWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5v
bk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9
CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6
VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHko
KTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBh
cmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGlu
ZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJy
YXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5
KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihh
cnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHko
KS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCku
YmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4
M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFr
ZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owog
ICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1E
YXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZh
MDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4wYjA1ZGM1MDM4MDE0ZjE3NGMwYThm
ZTgwMTg4ZGRmYzhkZmUxMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lk
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBG
ZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBt
X2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIuY2xlYXIoKTsKICAgICByZXNldENvbnN1
bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2Fs
bGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJl
c29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7
CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBl
LCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBl
bmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJl
YW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4LDcgQEAgdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0
cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5
cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAg
ICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5
cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEo
Y29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRh
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7
CkBAIC0zMjQsMTYgKzMyNiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVl
dWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1f
YnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNp
emUpOworfQorCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VEYXRhKCkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CisgICAg
cmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0zNDEsOSArMzQ1LDcgQEAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1
ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIHJl
dHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTMsNyBAQCBS
ZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRh
KCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2Nv
bnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRh
a2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzYyLDggQEAgU3RyaW5nIEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0
ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRG
cm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0
OwogfQogCkBAIC0zODMsMTAgKzM4Myw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0
Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxG
ZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3Vy
Y2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZSht
X2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmlu
ZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjZiYmJjZTczNDdh
YTNiYzJmNzBmNGVjNmQ4YmIwZTE4NzJhYWY4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAg
IHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZN
b3ZlKGRhdGEpOyB9CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwpAQCAtODIsNyArODIs
NyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5
cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQ
cm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9z
aW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNl
ZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMx
MDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5r
KTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURh
dGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCku
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4
Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5j
ZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5n
IFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3Vt
ZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBi
b2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIx
MzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAt
NTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEz
MmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90
IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2ln
bmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1
dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91
c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNj
Y2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0
aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAt
MjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlE
YXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQo
U0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0
IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5k
ZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBl
ZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0z
MiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJp
YWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wg
ZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
clNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7
CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWEx
NjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVj
ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmpl
Y3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBo
YXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVl
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2
YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhl
IHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9u
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNv
cmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkg
PSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5n
ZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJl
Y29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgp
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNv
cmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0y
NTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQg
PSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYg
KCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBw
ZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6
IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIz
YmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2
NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2Vy
IGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBz
dGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2
MmI5NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlU
b1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2Fn
ZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBt
ZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7
CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4
YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9y
IChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9u
KG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAg
ICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwg
WyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3
YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYzU0NDQ2OWVlNzc2NDkwODJh
OWMzYjZkNTE5MzFkOGQ4MDBhMzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzEx
Niw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJs
KQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAg
IG1fZGF0YS5jbGVhcigpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAo
bV9yZXNvdXJjZSkgewpAQCAtMTQ5LDggKzE0OSw2IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fcmVzb3VyY2UgPSBy
ZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiB9CkBA
IC0xODAsOCArMTc4LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1f
ZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAt
MTk1LDcgKzE5Miw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlm
IChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIG1fZGF0YS5jbGVhcigpOwogCiAgICAgICAgIGludmFsaWRhdGVSZXNv
dXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDEsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJj
ZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDM2MzkzYTNi
NmY5MjdmZjA0ZmJjMjVlZDU3YWRkYWZjMzkyOWVhZjMuLjljNDcyNmYyNjQyZGYwMWQzM2FiY2Rm
NGUzMWVjODJmNGM5YTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHBy
aXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2Rl
bD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsK
ICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjllOTBjZDU2YzhkZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAm
JiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVkZSAiQ2hyb21lLmgi
CisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHBhbC9z
cGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19DTEFTUyhBc3NldFZp
ZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUgbmVlZCBmb3IgYSBm
aWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZp
ZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2
Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJlY3RvcnkgPSBIVE1M
TW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOworICAgIGlmIChwYXRo
VG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRpcmVj
dG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGlyZWN0b3J5KTsKKyAg
ICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3lt
bGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVh
bGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxl
TmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKKyAgICBhdXRvIGZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0RpcmVj
dG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBpZiAoZmlsZSA8
PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxl
LCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7
Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sKKyAgICBpZiAobV9m
aWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5nKCk7Cit9
CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAgIGNyZWF0
ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNpemUgPSByZW5kZXJl
ci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1faW5saW5l
UHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldKTsK
KyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2Uo
KSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwgKChTdHJp
bmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVu
dCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG1f
ZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpOworfQor
Cit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
Y29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0
cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5s
aW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICVz
IGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5nKVttX2lubGlu
ZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6Y29udGV4
dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCByZW1vdGUg
Y29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPnVw
ZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2aWV3IGxh
eWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
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
YzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uZjVkNzI4NTNhYTFmZGYy
NWNkMzM1MGVmYTJiOGMwZjUxNjc1OTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEs
MTQgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAg
ICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09u
bHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1f
Y29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAg
IGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVND
SUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAg
ICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRT
Y3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThj
YTQ3NTI2NTYwYmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwog
ICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNW
R0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVs
ZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3Rv
bVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVk
T1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0
aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcg
KzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBB
U1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBi
b29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRy
ZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRl
U291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdl
dCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19j
YXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMy
MmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjVi
ZDMxZTM2MjMyNzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZh
Y2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5n
czsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9u
dFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcg
QEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7
IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVt
b3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEz
MDQ4MWVlNzI0Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3Yjcw
YTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25h
bERhdGEpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVm
NjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMyMzUx
YzlmZmEyYWI5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsK
IGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBv
c2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1
c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29u
dHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjsKQEAgLTUzNiw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNv
cHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2
b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0
b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERh
dGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxl
bWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2
MTksMTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3Rl
ZFNlbGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAg
U3RyaW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0
YXRpYyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICop
OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
CmluZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZh
M2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7
CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUw
ZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcx
LDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0g
KF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFy
Y2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0
cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFy
Y2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWly
aW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhS
b290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJv
cjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgp
CkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgp
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRh
KQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFu
Z2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAg
LTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JB
dHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAg
ICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBl
KTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlv
bihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVi
b2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3Rl
ZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0
cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVy
biBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpk
YXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwog
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3Ry
aW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRl
czpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3Ry
aW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRl
czpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1
YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBI
VE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwg
TlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2Ut
PnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3Vy
Y2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVU
eXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBm
aWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJy
ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07
CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAg
LTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0
YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAg
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0g
cmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlm
ICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVu
YW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNv
dXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNh
Y2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFy
ZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpz
aGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2ZDJh
YzI5NjMwNWQ2MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyAr
Mjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudElu
c2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBj
b250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmln
aW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJl
cGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJh
Z21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJj
ZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERh
dGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1l
VHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVu
dERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQog
CiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcg
KzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVu
dEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50
c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcg
QEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVu
dEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5t
aW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmpl
Y3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlv
bkluZm8pIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBB
bmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAg
IGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4
KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwo
KSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJl
bGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhB
cmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1
cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJr
cywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAg
ICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNv
bnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5k
YXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFy
a3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJh
bWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAg
ICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJh
bWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6
RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVu
dEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpi
dWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsK
KyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAg
YXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJp
bmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY1Nyw3ICs2NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwog
ICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwg
c3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJi
M2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2Fh
ZjJkYTRiMTkyYmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpA
QCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9h
cmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQo
KS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVt
ZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFy
Y2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRh
dGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGlu
dGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0
dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5n
LCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1b
V0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkg
dXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4
ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3
Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFw
cGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmls
ZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2Rp
ZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3Mm
IHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVm
ZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxl
bmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2
LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVt
cGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGlj
IFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3Vt
ZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZm
aWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAg
Ly8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29w
eSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmlu
ZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLjk4Y2FkM2UyNzMy
Yjc0YzU5YjMyM2IxYzk0OGM4ZjZkZTc3OThlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAx
MDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRl
cklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2Fk
ZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkg
ewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0
YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAg
ICBtX2RhdGFCdWZmZXItPmNsZWFyKCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkg
ewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0K
IAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAg
IHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1f
ZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwog
Ci0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7
CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3Ro
KTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNv
ZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9k
YXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNl
NjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0g
ICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUlu
Qnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5
YWJlZTdkYTU5MDhkNy4uZDc0ZWUxMDkzM2Q3ZWU0ZTVmN2VmOWI3YzQwOTA5ZmU5N2QwN2M5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3Mg
TmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9p
ZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3Rh
bXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25z
dCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFz
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAg
dm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsK
ICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDcgKzEyMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKKyAg
ICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
NDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1MTc4Njdj
MzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywx
MiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VD
b250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkg
ewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVh
dGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRl
eHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwot
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJh
c2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5OGYzMzIw
ODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIg
KzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChG
cmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUt
PmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAK
IGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250
ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwor
ICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29k
aW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRl
eCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2Ew
MmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAo
YXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAg
ICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZl
ci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3Yjcw
N2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5
ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBs
b2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nl
c3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4o
KSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVu
dGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNl
U3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpD
YW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi42ZmVi
OGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3Vy
Y2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsK
ICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAg
ICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJz
ZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBB
U1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2Uu
ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERh
dGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0
dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1
bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1Niw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQo
KQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVk
ID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJl
c291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li43
Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVz
b3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsK
IGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwog
ICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciog
cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
CiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9y
ZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZk
NGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2
OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAg
ICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9u
b3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1h
a2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCAzYTA2NGJjNzIzMWEzNjAwY2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBmMjJhYmUzNTVk
MTA5YzIwODYyZWZhZTlkYmQ1ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRV
c2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZp
bmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVx
dWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFs
IHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0
Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdiLi42MzA5
OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewog
ICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNl
Y3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAg
LTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJv
bm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRl
bnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAg
ICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
ICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
Lm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9u
c2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxv
Z1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAg
ICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24p
ID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Olll
cyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpO
bykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThm
ZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZh
ZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTks
NyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsK
IAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0g
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hP
cHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCos
IGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3Rk
OjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0
b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJl
dmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYm
ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVl
c3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li4y
NmRmMmY2YWYyZTI2ZjY0YjM4NWQ0ODM5NzRkYjQ2OTU0YWQzNDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRl
cjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0
aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7
IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJj
ZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9k
ZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRp
bmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRp
bmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRp
ZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291
cmNlRGF0YS0+Y2xlYXIoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dCgpOwogfQogCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAog
ICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAg
ICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNs
ZWFyKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVS
ZXNvdXJjZSgpCkBAIC0zMzQsMjQgKzMzNSwyMyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGRE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQog
ICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNv
dXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkg
ewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZm
ZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
KyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisKICAgICBpZiAoYnVmZmVyKQogICAgICAg
ICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitTaGFyZWRCdWZmZXIqIFJl
c291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291
cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5jbGVhcigpOworICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOwogfQogCiBib29s
IFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU3MSw3ICs1
NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9k
YXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBp
biBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwg
ZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFj
a1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNf
Y2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBi
YmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjQwNjUwMWVlNTMxNWE4Njg2MTFlZWNl
MjZjMTk0Njk1NWUxZTc5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNs
YXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNl
TG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
c291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90ZWN0
ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdl
dCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lk
IGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdDsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJl
cXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9y
ZXNvdXJjZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3Vy
Y2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2
Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQw
MTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li42
MWM1MjIyNGIwOWU1Y2NmYTJmYjQzNmM1N2JiOWIwZGJiNmE0YWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
OyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIFNoYXJlZEJ1ZmZlciYgZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KFJl
ZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZv
aWQgY2xlYXIoKSB7IG1fZGF0YS5jbGVhcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZl
cihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRh
KG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
bV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFN1YnN0aXR1
dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYz
YjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhj
OWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3Qo
KQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhp
cyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5
IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBw
YXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTky
NzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0y
NTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYg
cmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsK
LSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2Ug
ZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3Vy
Y2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5
KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJl
c291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7
CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0
LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5n
IHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4g
KGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMg
Y29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJv
cnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0
ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50
cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGlj
YXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAg
ICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklY
TUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1
cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5k
ZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0
NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcg
QEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0
aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyAr
NTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJh
Y2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAg
IGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9p
ZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYp
OworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9y
d2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcx
ZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZi
MzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJs
LCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxv
YWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkg
PyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAu
LjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsK
LSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5n
dGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUx
MWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li5hODFmMmQzNGM0OWVjODc1MWMwYTk1ZmFkYmQ1
Zjg2ZTA3NDYwZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgy
LCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0
YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODc4LDcgKzg3OCw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFu
ZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5Ogog
ICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNs
ZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0
b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMyw3
IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAg
IGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBj
YzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2
OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24o
QXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVz
ZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBp
ZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
KQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9u
J3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAg
ICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3Bv
bnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNw
b25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5n
ZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9u
c2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNv
dXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3Bl
cnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rp
b24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJj
ZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZh
bGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVz
b3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNp
b24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0
eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3Bv
bnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNl
UmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYs
MTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBk
YXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0
ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNy
ZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFk
b3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdp
dGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJy
b3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2
LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJy
b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZH
ZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxp
c3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZE
aWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWlu
UmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2
ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9v
bCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQog
ICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNv
dXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVS
ZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNl
KHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUz
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hp
dmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qo
c3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92
ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJj
aGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAg
ICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAg
ICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJl
CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlz
TnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlm
ICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAg
ICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNv
IGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdp
bGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJh
bWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIg
bWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIi
ICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3Ry
aW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0
NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEw
YmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAg
ICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBk
ZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBh
IGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChk
YXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAv
LyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBp
bW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdm
NjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4
NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hh
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
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1
NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBA
IGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+
Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAg
IC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5
c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAg
IEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1
NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7
CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91
c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2
aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5
MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNh
YzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpD
YWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQog
ICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgq
bV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVh
cigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsg
bmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2
MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5
ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VF
bmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRz
LgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2Rh
MTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZi
YTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8g
dGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJl
Li45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2Fi
bGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJv
ciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZp
cnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAg
ICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5
MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdG
b250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNl
RWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFi
OGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5h
YjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEy
MDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBj
ZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRl
OgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsg
fQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBl
NTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
QEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBk
aXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRv
dWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNy
ZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcg
KzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9u
c2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tU
b1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYx
ZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uYjUyZjk1YTY1ZDViYjdhZjkwZWJk
YTQ3ZWYwMDJlYjg4N2JjZjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmll
d0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzIsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29y
aWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5h
bERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAg
ICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2
YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uOWJhMWQxMmI0YjBiMzcyMDIxNTRhNWI3NDEy
NjM2Y2MyZTQ5MTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjCiB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIz
NSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1f
Y29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQog
ICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdG
aWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFs
RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYy
MzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVk
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
aGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1Nv
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
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0
NzU0MmRhY2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li43NGNiNGIwODRiZWE3Yzc3
ZjNkYjgwNWRjYjRiM2IwOGEyM2M2OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
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
IGNvbnN0CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3Ry
aW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitz
aXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOwor
fQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFz
aXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDkgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJl
c2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAg
ICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQu
Y29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVu
dC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKQEAgLTIwNywyMyArMTk2LDI2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAg
IHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rvcikp
IH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsK
ICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
IH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigp
CiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTIzNywxNyArMjI5LDEyIEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6
ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQot
ICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJu
IGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CkBAIC0zMjIsOCArMzA5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBT
aGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdp
bigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVy
biBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTMz
OSw3ICszMjUsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
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
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zNTgsNyAr
Mzk0LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMzY5LDcgKzQwNSw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5k
aWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpAQCAtNDIzLDcgKzQ1OSw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00
NDIsNyArNDc4LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBt
X3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3Nl
Z21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ2NiwxNiArNTAyLDIx
IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIg
eworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0s
Ci0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAg
ICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0
aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgp
OwpAQCAtNTAxLDcgKzU0Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAzOTUzYjExMmJi
MTEwNzUwYTdjYjE3NDNhOGRjZDc3MjQ3YWRhMWFiLi5jNzQ1OTcwNTY1NmFjZmIxNDIyMmZiYzIy
OTAwM2MzMDgzZjJiYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTYyLDE0NSArNjIsMTI4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIg
dG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBp
bnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4K
LSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4g
QXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRo
YXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMg
aW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0K
LSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsK
LQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5j
dGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4g
c2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAg
IHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAg
ICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVy
JiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShw
cm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hv
dWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9i
amVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEg
bmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYK
IAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNF
KENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1Jl
ZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYg
cHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7
IH0KIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdt
ZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAog
I2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Cisg
ICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAg
ICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+
LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK307CiAKLSAgICAgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90
ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
ZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSAmJm1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gJiZidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4gJiZ2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgJiZwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFy
cmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShOU0RhdGEgKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxH
Qnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAot
ICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiBjb3B5RGF0YSgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25z
dDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0g
ICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
Q29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAg
ICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMTkyLDE3MSBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7
IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBP
KDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNv
bnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworcHJvdGVjdGVkOgorICAgIERh
dGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxz
ZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZh
dWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpOworI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2Vu
ZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVT
ZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdt
ZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5n
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0gICAg
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAg
bXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBt
dXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBB
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8g
ZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1l
dGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGlj
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBl
bHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChz
dGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
Y2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlV
c2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYK
KyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
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
b2lkIGNsZWFyKCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAg
ICB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
QEAgLTI2NSwyMSArMzY2LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
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
MGJiMmZjYjkxLi4wNTgwNTkzYTI2YmQ3ZmJmODBhOGI0MDliYWU0MTk4NzNjNTJkMTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0g
Q0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5
OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0K
QEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9y
TGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVy
KQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNo
YXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05T
Qml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYs
NyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3Vy
aXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0
IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYw
ZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSAr
MzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNl
IFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlv
biBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3Jl
U2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAg
ICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2Vn
bWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRh
U2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZToo
TlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7
CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0K
IAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25z
dAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1f
c2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVs
bHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsK
ICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0Rh
dGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRy
PE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QK
K1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewog
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRX
aXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3
MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAv
LyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBv
YmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4Nzdk
ZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4yYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlk
NzM0M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDgg
QEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2Nh
dGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8
IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5k
YXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAg
ICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQg
aW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE5Niw3ICsxOTcsNyBA
QCBzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogCiBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFw
ID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAg
dW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlz
IGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQot
ICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+
YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBr
ZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hl
Y2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEy
ICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlz
IGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8g
ImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBh
cnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250
YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
KyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRz
LT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJL
ZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdi
ZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjA0MWRkZjAxYWYxMmEzOGY3
NjQ4NDI5OGIxZGUwOWE2N2M0NThkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5
IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8
PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKKyAgICByZXR1cm4gQ29udGlnb3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVy
LmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFl
ZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZj
MDBiZjIuLjI0NmJiMGQ1MzFhOTdlMjA1ZWQ1NmI5YTNmZmQ1OThmNTAwODI0OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQo
bV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAg
R1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJp
YW50QnVpbGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUu
LmMxNWQ5ZmYzNTBjMjI2YmMzNTE0MjE5NDJlNTM4NWI3YTMxZmY5ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ291c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2
Li4xMWVhMmI2MWY5MjdhZmJjNTA0YmQ3NDkxNjM0MDU0MDgyNjQxYjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQot
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
CiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VT
b3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBJbWFnZURl
Y29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBi
ZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVk
Z2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYg
aW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBp
cwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0
YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRh
KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dE
YXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgogICAgIGRhdGEucmVmKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRl
NmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95
RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9
IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0
KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcw
OWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRi
ZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcg
KzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250Lmdl
dCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0
YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1
YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZj
b24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBh
dXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAg
ICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYy
NTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwx
MCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVh
bGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZv
bnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250
Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAog
ICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYy
ZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uNGQ3MjYzM2Q3OTlhODQxNWNhZTM5NjQ4
ZDc4N2ZlODRmZGI2MTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmUKICAgICB9CiAKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKLSAgICBpZiAoRlRfTmV3
X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1
ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKKyAgICBpZiAo
RlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0
ZSo+KGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAm
ZnJlZVR5cGVGYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQpk
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
YW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2
N2MwMzI1MGJkMjU3Li45NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIwNDdhOTFiYzczZDA4MTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24o
Z3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE4Miw3ICsxODIs
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
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGUx
YTIxYTI5NzQxOGI3YTUxNTgwMjgzZDU1OTA3MDUwY2U1NTJiOTEuLmQ1NmIxOTg1MTQyNTc2YTc1
ZTllZDExMWQwZjY3OTJmOWM2YTBiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjQ0LDcgKzM2NDQsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERh
dGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRD
b250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxv
YWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGlu
aXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0
YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
ICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2
NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYK
ICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFs
aWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVy
aW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3Jl
YXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVl
Y2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4
ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9u
RGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5k
ZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThi
MWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAg
LTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxs
b2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudElu
c3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRz
Rm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3
NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRj
YzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENv
dmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAg
ICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhl
cmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgog
Ci0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rp
b25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVj
dGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRh
YmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3Zl
cmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAot
ICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAo
b2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVC
YXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZv
aWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9w
ZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAg
dm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMs
NyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEds
eXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBo
VmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQg
Z2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhH
bHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1h
dGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tp
XSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAg
ICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3Rv
cjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAor
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBh
cnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJs
eU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZh
bGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsx
NzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9w
ZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxH
bHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBo
Q291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBo
Q291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlz
VmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25z
dGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENv
bnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRz
T2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBN
QVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8o
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9m
ZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRz
KiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZh
cmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
CmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMx
MTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBs
YXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7
CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1
ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1f
bWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUz
NzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1
MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYg
VUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9U
QUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVp
bnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQz
Ml90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3Vu
dCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFi
bGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBj
b3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2Yo
VCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9p
ZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9
IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24p
CiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRb
MV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zm
c2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3
IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShP
UEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHBy
b3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMy
X3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNh
c2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjBm
YThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4MzJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxl
IDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBl
OjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhl
YVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2Fs
RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVk
IGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6Vmhl
YVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAg
aWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NV
QlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJs
ZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMy
ODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBj
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdE
STsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAog
ewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEz
NGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xk
LAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRj
KDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwog
CiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9u
dERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAg
ICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
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
NjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2QyMGQ1YjZlNGMyZDY1
ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJl
dmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJl
dmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIp
Ci0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBt
X3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAg
ICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBw
cm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmll
d0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNh
ZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJj
MGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJv
YXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAg
ICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0
YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUo
dHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlw
ZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBz
dHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0p
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAg
ICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAg
ICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5k
ZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3
MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2Vi
Q29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2Fy
ZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBl
c1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29u
dGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwog
ICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsK
LSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNm
NzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwx
MiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNd
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0
YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5
cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAg
ICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAg
IGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYs
NyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFz
dGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAg
Qk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBh
c3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0
cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRU
eXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7
CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewog
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFz
dGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0
YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsK
ICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjVlZDk4
YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAg
ICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2Rh
dGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9h
dWRpb0Zvcm1hdERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVl
ODM4NGYzNmI3YjUzZjUuLmM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAg
ICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdy
aXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5
IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAg
ICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAg
LTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBs
ZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0g
ICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJl
dHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CmluZGV4IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUx
ZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRf
dCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aElu
Qnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRz
KSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+
KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6
OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZl
MjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBj
bGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBA
IC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1l
bnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29s
IGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44
MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVz
cG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5
NmYwMjQwNi4uNmFkNDZmNzk3YTRiYzcwYzgxYjcyOWQ4MzgzMDcxY2E0MTkwZGUzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDog
YnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25z
ZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAg
ICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dp
dmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDog
dWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNh
bGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5v
dFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+
IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7
CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8s
IFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJj
ZTsKQEAgLTEwNiw3ICsxMDUsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92
ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdl
JiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29u
c3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXI7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQo
KTsKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1F
OiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVy
IHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCkBAIC0x
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
aW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uY2RjNDM3MGI2
MGViNjY4ZTI0NjI5MmM2MDcwYjRiODUyOTdmNTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkw
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRG
aWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAg
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
bV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cy0+ZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRk
YzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2Uy
Nzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0x
NDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVk
T3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6
OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwg
V1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNp
bmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9o
YW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAog
dm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1
ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1
ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEz
LDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1v
Y2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91
cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNw
b25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmlu
ZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYg
KCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5z
dGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5k
YXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVT
dHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmlj
YXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAg
LTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVz
cG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3Bv
bnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVm
ODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2Ny
aXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlw
dEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25z
dAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZd
KGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZd
KGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRG
OChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZm
ZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xl
RmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1
ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250
YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdl
dCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQt
PmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5n
LnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZm
ZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAz
MzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFm
ZWJjNmMwNjc0NGY5MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAg
LTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2Ny
aXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7
Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KTsgfQorICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1
ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBj
b25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29k
ZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5z
IHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
Y3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIx
MjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRi
NDE5OThiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RG
TW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFx
dWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpKQogewogfQogCkBAIC03OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEt
PmdldCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250
aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAg
bV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNE
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAg
IGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JP
Y2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2Zi
MWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUx
MDI2ZjU4M2EwOWIxODQ3YTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNj
b3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29s
IGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJv
ck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3
LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1
ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlk
NWUzNGQ3NTFhZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcg
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
ZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLjg2YjQ1OTk3MTZlZjQxOWY1ZDRmMTY4MjFm
ZjA1NDA0OTEzZmQwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
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
cG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5nZXQoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3Ry
aW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9j
dW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsK
KyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+Y2xlYXIoKTsKICAgICBtX3Jlc3BvbnNlQ2Fj
aGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAg
ICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBs
ZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAg
ICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRm
NmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyAr
NDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAg
IFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMz
Mzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFy
KiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9v
bCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYm
IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJi
MzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0
LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAg
ICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBh
ZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3
ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li4yN2ZjMWYzYTlkNmQxZTI4ZjkwZTYx
YjRjYzFmY2U0Njc1YjExYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRp
YyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7
CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3Bv
bnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0x
MDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJv
bm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFt
ZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5l
Y3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVC
bG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENs
aWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAs
IG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygp
OwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1C
dWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAK
ICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAg
fTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlz
TnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJl
c291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1p
bWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGlt
dW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1y
ZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVz
IGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICgh
aXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9i
dWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+Y2xlYXIoKTsK
IAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5j
bGVhcigpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAg
Ym9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7
CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jv
d3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBp
biB0aGUgY2FjaGUuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
ID0gbV9jYWNoZS0+Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
KQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+Y2xlYXIoKTsKICAg
ICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBm
cm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGgg
PSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoIDogYnVmZmVyLT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJ
Zk5lZWRlZCgpOwpAQCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8K
ICNlbmRpZgogCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEu
Z2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5n
ZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICgh
bV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3Mg
YSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAg
ICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBz
ZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2Fk
KG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAg
ICBBU1NFUlQobV9idWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlz
TnVsbCgpKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0s
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsK
ICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3OSw3
ICsxMjgxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVu
dHJ5KCkKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTog
Tm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAg
ICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBj
YWNoZSBlbnRyeSBiZWNhdXNlIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3Jp
Z2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlv
bi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jpbmcg
ZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNo
Q2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZN
b3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAg
ICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJy
ZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT50YWtlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
TE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBp
biBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5j
dXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7
CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9y
ZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsg
KnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJl
ZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEz
MGJlMDRmMGRmNDQxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
OwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNp
emVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNM
b2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxO
ZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMx
NjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEy
YTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAg
ICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAg
ICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3
YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQw
OWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBA
IFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiBy
ZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hP
bihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAg
fSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9
LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjcz
LDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VC
b2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwg
c3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9y
YWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1
MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0x
MDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAg
ICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYg
KG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9Owor
ICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7
IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0
NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi4wZGUzZDIxZTAwN2Q5NWFlNzJjMzAy
NzUxYzA3NDdhY2ZmNWFjNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC00Niw3ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hl
KGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnko
V1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRS
ZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmNsZWFyKCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYg
KHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1p
bmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAx
MCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6
ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBt
YXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmNsZWFyKCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtl
KCk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBidWZmZXIuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7
IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2Fu
J3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hl
YWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgV1RGTW92ZShidWZmZXIpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdj
ZDcwYzQwOTA1MmFmOGVmZS4uNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Owog
ICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0
ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkz
Zjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNv
cHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVy
biB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZl
M2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAs
MTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0Owog
CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0g
ICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
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
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4
ZmJlNTEyNTU2ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkg
KzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNp
ZiBVU0UoQ0YpCi1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAq
cHRyLCB2b2lkICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJl
YWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNy
ZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFp
blB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihT
aGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNv
bnRleHQgPSB7IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4K
LSAgICAgICAgTlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRp
b24KLSAgICAgICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0
ZQotICAgICAgICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8v
IHByZWZlcnJlZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
LXsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMg
ZGVhbGxvY2F0ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0
ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBk
YXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBV
U0UoR0xJQikKLSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19u
ZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9
LCB0aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsK
LSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVy
biBzZWxmLT5kYXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJl
dHVybiBzZWxmLT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
Ojp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBp
ZiAoIXJlc291cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNo
YXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25l
ZAogewogfQogCi1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0K
K1NoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJv
b2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAg
LTE2Miw3ICsxMjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1
MTYwYWE0ZjdjNmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMs
MTIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1Ymxp
YzoKIAogICAgIGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJs
aWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1v
cnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAg
UmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNl
dDsKLSAgICB1bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0
OworICAgIGNvbnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uMTU1ZGU3ODIxZGZi
ZmYzNDI5MjI2YTNlODNjZjY5M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBp
c051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEz
ICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5
QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIg
PSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNl
bmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5k
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsK
ICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8
IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6
ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVy
KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291
bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RG
Ojpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZd
KGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBA
IC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFz
dGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3Rl
YgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2
LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
e3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyAr
MzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDEzICszMDMxLDIzIEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVm
ZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgc2NyaXB0KQogewpAQCAtMzA5NSw3ICszMTA1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVj
b2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTEx
ZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBD
dXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzcz
NjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2
NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJl
Yzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDli
M2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFn
ZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29s
IGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsg
fQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5
YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0
NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEs
IGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBs
YXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9u
KQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4u
OTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAg
ICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAt
MTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlh
bGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAK
LXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRU
eXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZl
Y2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2
MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGln
aGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmICho
aWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAK
LSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10g
aW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5T
KFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGln
aGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQg
aW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhp
Z2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3Vw
ID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpI
aWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzll
ZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFm
ODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlv
blN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2Iz
YjU4MjAyM2ViNTFlYzcuLmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBj
SGFuZGxlLmRhdGFTaXplKTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCks
IHBhc3RlYm9hcmRUeXBlKTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQo
Y29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5n
ZUNvdW50KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZm
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
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNi
MDQwMDMyZjk2NzcuLjg4ODI3ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBt
YWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5l
MmZmZmFhNjU0OWRmNDg3Y2E2NDFiODUyNzEyNDYzYjJhZGE5NGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRs
ZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5y
ZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3
LDEyICsyMTUsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0gbV9zeW5jRGF0YS0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgICAg
ICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUo
ZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJv
ciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdj
MTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgRnJhbWVJbmZvOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRp
b25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZl
MDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2Fh
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENo
YW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlG
b3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGEx
MDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0z
NTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50Vmll
dyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
aW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRh
V3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2Iw
ZmYzZC4uNjVlNWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JX
ZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJy
YXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0
ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBh
c3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdl
dCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wg
YWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdp
bklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3
IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
Kilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNo
YXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hh
cmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVz
ID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5H
UmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZp
bGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpz
aGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6
c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbQppbmRleCA3ZTkzNzBmYTMzNjU3NjBkYTA1
ZWFhMjdlNTJlYzdmMGJkMjJjZjAwLi42Yjg3MDBkODE5NGY0MDNhZDRkMTg4MmE3NTk2ZDk2NjFk
NDMyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBA
IC0xMjYsNyArMTI2LDcgQEAgLSAoQk9PTCljcmVhdGVGaWxlRm9yTW9kZWw6KFdlYkNvcmU6Ok1v
ZGVsJiltb2RlbAogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybiBOTzsKIAotICAg
IGF1dG8gYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbC5kYXRhKCktPnNpemUo
KSkpOworICAgIGF1dG8gYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtb2RlbC5kYXRhKCktPnNpemUoKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNv
dW50LCBieXRlQ291bnQgPT0gbW9kZWwuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlKTsKICAgICBfZmlsZVBhdGggPSBmaWxlUGF0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgx
YWE3ZDNmY2Q5YmRlOTBlZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2Ri
MGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJh
cnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFz
aGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1l
bW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRh
U2l6ZSkpOworICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1h
Z2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNm
ZTg1ZDg1ZTUzYTRlZDk2OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBk
ZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHIKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlw
Y0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSAr
Mjc1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJ
bWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+
Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VI
YW5kbGUuZGF0YVNpemUpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVy
OwotCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBh
dXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlm
ICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJj
aGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFy
Y2hpdmVIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1l
bW9yeUFyY2hpdmUtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsK
ICAgICB9CiAgICAgcGFnZUNsaWVudCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9h
cmROYW1lLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0
aXplU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZp
c2libGVVUkwsIFdURk1vdmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpk
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
bnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUw
MDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJl
ZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRh
dGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCAr
NzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4g
ZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVm
KCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25z
dCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
Y29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29u
dGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRh
UmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwg
dG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJM
UmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQu
LmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQg
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9k
ZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0
YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRk
NDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAg
IGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZv
ciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFi
NDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMx
ZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVz
cG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUg
dmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0
Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNl
cHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5j
b2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVy
KQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMw
NmRlNThjMWU4Y2MxMjMxYTY3Ny4uY2UwZDBkMTJjYTBmNWQxMGIxNThiOTBjZTE1NmI5NjJkYjc5
NDk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVn
SW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwg
bV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVk
KQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00
MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJl
YW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVu
Z3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUg
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJy
b3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhLT5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC05MjksOCArOTI3LDggQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIo
KQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAg
IGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1E
YXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQo
KTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEw
IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8g
RGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYg
KCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
bV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxl
bWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRi
NTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5
NmQzZGYwZGIzY2Q2MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRv
IFdlYkNvcmUuCiAKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25h
cHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVu
IEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5z
aWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmRlZDFk
ZTE5YzE5MjVkMzdiOGQzOTNlODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNl
RGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAg
c3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAg
ICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3Ro
aXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVm
ZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkpOwogICAgICAgICBp
ZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10o
UmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi4xMWJi
YWRiNDEyOGRmMWM4YjkyZGU0NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
ZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNo
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdl
YkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jl
c3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFNoYXJlZEJ1ZmZl
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
MmUwNTU2ZS4uMjk0YzI0MDcyZGJmZTk3ZDBjNjU3YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQK
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
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNI
YW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJ
ZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQs
OSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXpl
KTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hh
bmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUz
MWFiNzMyMTRmYjAuLmVhODk1MmRiNTkxN2Y0MTdmYjY1YTMxOGNmMzdlYzVlZWFhZGJhMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
VmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5
ZGZhNTlmNWZkMTNjNzU0ZTEwLi5iZmU2MjRkNTE5M2M1MmQ5NjQxNTlmMWVmY2RjZDAxMzk0NzAw
NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBm
aWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9
Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZm
ZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCkBAIC02
OSw4ICs2OSw3IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGlu
ZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5k
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQo
KSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9
CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZi
YzI2YzA3Y2I1M2RhODcuLjc2ZmZhMTExMzkyYTlkM2I0Zjg1YjU5OGNkNmFiY2NlNTE4OGYwNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC01NCw3ICs1NCw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3Ry
aW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2
OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2Ji
Yzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3
ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNp
emVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAg
LTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAg
ICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJj
aGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNE
YXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAg
ICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDli
ZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJj
MmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6
OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXIt
PmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFp
blJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25z
dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ZGQ1OWNmYTcxMDZmMDg0NDJlM2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4uOWI5YTk4NmMwYzk2YTgz
YWNmNWI4MjllNzM2MzkwNzE3NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzUsNyArNzczNSw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRN
ZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwg
aSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6
Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRT
Y3JvbGxUb0FwcEhpZ2hsaWdodChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNI
YW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNj
cm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0
MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMx
ODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3
M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3
MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BB
UkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJO
QUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vs
c2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBl
YjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1
Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0Rh
dGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0
YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2Ut
PmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5T
U3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBk
OWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4
YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsK
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVz
dERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4
MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBA
IC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1w
bGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5v
dCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4u
OTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlm
aWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRo
bmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZj
MDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZi
MzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
YnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
Mjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThl
NTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0
YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVw
cmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4
YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVB
c1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3Nl
bGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJl
ZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3Vt
ZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJj
aGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2Vk
QXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0
b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1
NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3
ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJ
dGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFn
ZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdl
dCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAK
ICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5
OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1
YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29k
ZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAg
IFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0
cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBu
aWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAo
cmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRh
KCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAg
ICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGlu
ZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3Vy
Y2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgp
Lm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEg
Zm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRh
dGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5j
b2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAg
ICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
cmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNV
UkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQog
ICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNo
YXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRl
LT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRl
Y29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5k
YXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
cmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MWE3MWVkMjM2ZWI3MzAxZjUw
Y2E2MDQ1ZjBlZjcxZGJjYmIzMzJhLi42Mzc4NDkzNGNmNWJiYmM2MDgxMzI2MjVhNDRkNmVhMjFh
YjI5ODMxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEt
MTEtMjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFuIEFQSSB0ZXN0IGZvciBiYXRjaCBpbWFnZSBhbmFseXNpcyAoLVtXS1dlYlZpZXcgX3N0
YXJ0SW1hZ2VBbmFseXNpczpdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNjkyOTcyZGVhYTc2OTRhMWI2YzFmZmZlNDE4
ZTVmYTQ3MTUyNjRjLi44M2JmN2QwNGE0Zjg1MWNjNDMzZDYzMDhkNDA3MDk4OWEyYmEwNmI1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDAsNTIgKzQwLDUxIEBAIG5hbWVz
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
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQorVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSAr
IDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
KTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5n
ZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWZmZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTMsMTAgKzkyLDEwIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtd
ID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRl
c3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikp
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRl
c3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRh
MSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3Ry
bGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBi
dWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRD
b25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJs
ZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVy
LT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMDgsMTAgKzEw
NywxMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJn
ZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEo
MHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyAr
K2kpIHsKQEAgLTE0OCwxNyArMTQ3LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5
KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQu
IFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVz
LCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwg
cmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0
RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWls
ZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAg
ICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXpl
ICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBz
aGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBz
aGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAg
IEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXpl
KCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShs
ZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHku
CisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
fQorCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3RE
YXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051
bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBj
b3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRy
KCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29w
eS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2Fs
CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
ICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
Mi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmNsZWFyKCk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cisg
ICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwg
Y29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzIsMjMgKzIwNywyNSBAQCBzdGF0aWMgdm9pZCBj
aGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNv
bnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAg
ICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8
dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4g
czMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBh
dXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwogICAgIGF1dG8gZ2ggPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAg
ICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRh
dGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Ci0gICAgYXV0
byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29t
ZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFi
Y2QiKTsKICAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CiAgICAg
Y2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwpAQCAtMjAyLDMwICsyMzksMzQg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9y
PFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICBy
ZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgp
LCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAn
Yid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwg
eydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKGJ1ZmZlcjEpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90
Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9
IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAn
YycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9
KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAg
ICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShy
ZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5jbGVh
cigpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXIt
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>444951</attachid>
            <date>2021-11-22 02:16:04 -0800</date>
            <delta_ts>2021-11-22 21:14:40 -0800</delta_ts>
            <desc>WIP Combined Patch for EWS</desc>
            <filename>bug-233030-20211122211601.patch</filename>
            <type>text/plain</type>
            <size>466568</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNjVhOWVkNTcxYzEyNWRlNDc0YzBhNWVjMTNlNWZm
YzY1ZmVlZjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4MSBAQAorMjAyMS0xMS0yMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIKKworICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
Ojpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRh
dGEgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5
Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJl
SW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6Cisg
ICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBB
bmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJl
bW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxp
dmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
cjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVs
dGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0
YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVz
b3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNv
dXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENh
Y2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3Rv
bUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZl
cnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpy
ZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQpOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
OgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdtZW50
OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RT
aW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJ
bWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVn
aXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0
ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAg
KiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAg
ICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNw
b25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKKzIwMjEtMTEt
MjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIGdldEVPVEhlYWRlciBtZXRob2QgaW4gT3BlblR5cGVVdGlsaXRpZXMuY3BwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MTEKKyAgICAg
ICAgcmRhcjovLzg1NjU2ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorCiAyMDIxLTExLTIx
ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3Jh
dGlvbl0gRW5hYmxlIGJpZGkgY29udGVudCBmb3Igbm9uLWlubGluZS1ib3ggY2FzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggODA2YTc0MjlmNWE1ZWVhM2UzZTRhMjQ0MjJmZjEwZjBhYzUwMGE2Zi4uNGQ1NjJkNjVm
ZmNjMTAyMmUwMDU5MjQ2MzY3ODgxNTc3N2VkZWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMzAg
QEAKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0
Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICog
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+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBl
ZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERP
TVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVS
TFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0
aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1P
cmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0
QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tNb2RlbFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGNyZWF0ZUZp
bGVGb3JNb2RlbDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNo
ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVt
b3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6
Ly84NTYzNzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZm
ZXIgdXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVh
ZC4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4g
dG90YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNr
IGZvciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisg
ICAgICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJ
blNoYXJlZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZv
bSBzcGVjaWZpYyBjb2RlIGFuZCB1c2luZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4K
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJ
bWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVs
bGFiaWxpdHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZv
ciBudWxsYWJpbGl0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xs
VG9JbmRleCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hh
cmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAgICByZGFyOi8vODU2Mzc3MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGly
ZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAg
ICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5v
IGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBz
aXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVu
IG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNv
dXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOiBN
YWtlIFNoYXJlYWJsZVJlc291cmNlIHVzZSB0aHJlYWQtc2FmZSByZWZjb3VudC4KKyAgICAgICAg
QSBTaGFyZWFibGVSZXNvdXJjZSBvbmNlIGNyZWF0ZWQgaXMgaW1tdXRhYmxlIGFuZCB0aGUgU2hh
cmVkTWVtb3J5IG9iamVjdAorICAgICAgICBpdHNlbGYgaGFzIHRocmVhZC1zYWZlIHJlZm91bnRp
bmcuIERlbGV0aW5nIHRoZSBvYmplY3Qgb3V0c2lkZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAg
aXMgc2FmZS4KKyAgICAgICAgTWFrZSBtZW1iZXJzIGNvbnN0LgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAg
IHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGlu
c3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcg
Zm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVj
a2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgpOgorCiAyMDIxLTExLTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gU2VuZCBXZWJHUFUgbWVzc2FnZXMg
aW4gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFk
MzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlhMmUxNWNjYy4uOTE4MGVjZDkzMTM2MjY2OWI0YWQ4
ZmFiOTEwYjI0ODdlZjEzYzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246
XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06Cisg
ICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9j
dW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1
ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlv
bkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
aW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4
MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpz
YW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkp
IHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVU
RjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0g
c3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEw
MC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0Rh
dGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAg
bV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9t
aW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1t
CmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIx
NTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9t
aW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0
Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2Vu
dGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2
NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNw
bwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0g
KGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1E
YXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAo
Y29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTlj
MTU0MzM4N2QuLjg2NzUwZGZlZWZlYzU1NWNhZjlhMWJiZjg1MTA2MGE1OWFmZjI4OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODgsNyArMjg4LDcg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNp
emVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9u
UmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAg
IHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1v
dmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlz
RG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OCwxNSArMjk4LDE1
IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFu
ZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShk
YXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHko
cmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Us
IFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3Zv
aWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigp
KSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlv
biA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcs
NyArMzE3LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5l
OjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHku
cmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRj
aFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlw
dWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJl
c3VsdCkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5m
byYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAg
ICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8m
IHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1
bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0Fj
dGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJl
c3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShy
ZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxl
IHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCku
aXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUo
ZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkg
fSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNj
ODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURh
dGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7Cisg
ICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBS
ZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxk
UmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHND
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0
MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBA
IC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBb
XShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAg
ICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4g
YnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29w
eVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBi
ZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5
IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3Bv
bnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNl
Qm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBb
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qg
c3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3
MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcs
NyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRj
aChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
Y2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVl
cnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9u
c2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNv
cHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4Zjdj
ODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tl
eWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZl
ci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0g
ICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3Ry
aW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZN
b3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5
MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4
ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBz
dGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3Ro
IHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJu
ICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0
aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2Um
IGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1
ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9p
bmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJz
dC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIu
Zmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZh
cmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUo
YnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJm
ODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcg
QEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURh
dGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRC
dWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEg
PSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBk
YXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAg
LTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURh
dGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3Rf
Y2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1f
Y29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBA
IEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVm
ZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQog
CiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRh
a2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7
CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJh
bXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFu
ZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5
QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgp
LmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJy
YXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJh
c2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNl
YzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2Vu
RGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNo
YXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAg
ICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0
YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAx
Y2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMGIwNWRjNTAzODAxNGYxNzRjMGE4ZmU4
MDE4OGRkZmM4ZGZlMTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCBy
ZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0
Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLmNsZWFyKCk7CiAgICAgcmVzZXRDb25zdW1l
UHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxi
YWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogewog
ICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3Np
bmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBt
X3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9z
aW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5cGUgPSBt
X3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQu
cmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSks
IHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFt
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJp
bmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBl
OjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAg
IGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBl
LCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNv
bnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpA
QCAtMzI0LDE2ICszMjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVl
KEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2J1
ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhLCBzaXpl
KTsKK30KKwordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit7CisgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
V1RGTW92ZShkYXRhKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlRGF0YSgpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIHJl
dHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0NSw3IEBAIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZm
ZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1
cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9i
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUzLDcgQEAgUmVm
PEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNy
ZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZSht
X2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgp
OwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250
ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtl
KCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2Miw4IEBAIFN0cmluZyBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4
dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJv
bVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsK
IH0KIApAQCAtMzgzLDEwICszODMsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENv
bnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0
Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNl
KTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7
Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9i
dWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRl
eCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQyZDRjLi42YmJiY2U3MzQ3YWEz
YmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92
ZShkYXRhKTsgfQorICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKQEAgLTgyLDcgKzgyLDcg
QEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJv
bWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2lu
azsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRj
MDI5MzJkOTM5NmY2NDYwMDQ2ZTQ2YmQ1MzYuLmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAw
Yzg4MGFiN2MxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7
CiB9CiAKQEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAg
ICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRh
KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAg
ICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNl
dERhdGEoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5
NGNhOS4uYTE2MDc0N2RlMGNlYWNlZWNjNzc4ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2Vs
KCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBS
ZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVC
b2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9k
eVNpemVXaXRoUGFkZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1
MmRkZDA0MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUy
LDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJk
MDRhNDU3NmMwNi4uODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBo
aWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25h
dHVyCiAKIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRv
IGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNC
dWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2Nj
NDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJp
YWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgp
CiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4
MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRh
dGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0
YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJ
REJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1
aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4
IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0
NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIs
MTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRl
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwog
Ym9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4
MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcg
QEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0
U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2Fj
dGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtl
eVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJh
bnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAo
IWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3Mg
fTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGlu
ZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsK
QEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFz
UmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
aW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50
NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRv
IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2
YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFs
dWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2
YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9y
IGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4
aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07
CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFk
ZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3Jk
IGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0y
MTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0g
a2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0g
SURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMs
NyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2Uu
dXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0
YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNv
cmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAm
JiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0g
SW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3Jk
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUw
OCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0g
MDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktl
eURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0
byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICgh
bG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVy
S2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiBy
YW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3Bl
cmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2Jk
OGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVh
NjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRC
bG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBr
ZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNR
TGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+
YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3Rh
dGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmNwcAppbmRleCBhZmVmNDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJi
OTY3YWEzLi4wMDI3NTcwODAyYjE0YjA5ZDFhYTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9T
ZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2Vz
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVz
c2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUo
KSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBt
ZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
ZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwog
CiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5
YjIwOGVmMzZmNjgwM2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNl
dENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAo
YXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbiht
ZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVu
dC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAg
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsm
XShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2Iy
ZTJmY2EwZDM3YWE1Mzk5OWZhNjI4NGE0NTlhNGU0NzMxYWMuLmM1NDQ0NjllZTc3NjQ5MDgyYTlj
M2I2ZDUxOTMxZDhkODAwYTM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkK
IAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBt
X2RhdGEuY2xlYXIoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1f
cmVzb3VyY2UpIHsKQEAgLTE0OSw4ICsxNDksNiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX3Jlc291cmNlID0gcmVz
b3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwogfQpAQCAt
MTgwLDggKzE3OCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5
NSw3ICsxOTIsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAo
cmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAxLDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0g
ICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCks
IHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJj
ZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VI
YW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAzNjM5M2EzYjZm
OTI3ZmYwNGZiYzI1ZWQ1N2FkZGFmYzM5MjllYWYzLi45YzQ3MjZmMjY0MmRmMDFkMzNhYmNkZjRl
MzFlYzgyZjRjOWE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2
YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+
IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAg
ICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTExZjA0YjJiMzI2MGY2YmY4NjIyMzdmYTI5ZTkwY2Q1NmM4ZGQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnRDb2NvYS5tbQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgIkNocm9tZS5oIgor
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxwYWwvc3Bp
L21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19Q
UklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3
ZXIsIEFTVklubGluZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSgpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEgZmls
ZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3
LAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1Njcu
CisKKyAgICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1v
ZGVsRWxlbWVudDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRv
RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3Rv
cnlFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAg
aWYgKGRpcmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxp
bmtzKHBhdGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKHBhdGhUb0RpcmVjdG9yeSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxp
dHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzU2OC4KKyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5h
bWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3Rv
cnksIGZpbGVOYW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0g
MCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwor
fQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFyRmlsZSgpCit7CisgICAgaWYgKG1fZmls
ZVBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fZmlsZVBhdGgpOworICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOworfQor
Cit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICBjcmVhdGVG
aWxlKCk7CisKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzaXplID0gcmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5zaXplKCk7CisKKyAgICBtX2lubGluZVBy
ZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXSk7Cisg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkg
Y3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5n
KVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQo
KS5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChtX2Zp
bGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXplKTsKK30KKwor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNv
bnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQoreworICAgIGlmICghZG9jdW1l
bnQoKS5zZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJp
bmcpIHsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGlu
ZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBi
dXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQ
cmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW21faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJ
ZF07CisgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNv
bm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT51cGRh
dGVGcm9tRWxlbWVudCgpOworfQorCitQbGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50Ojpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21faW5saW5lUHJldmlldyBsYXll
cl07Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2Qz
Nzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1v
ZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VS
VChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBi
eXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVf
dCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNv
dXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgp
LT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUu
Ljg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0
NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdB
Y3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVj
dCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmpl
Y3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0
NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2
NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3Vz
QnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkp
CisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7
Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0g
ICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFu
ZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1f
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0
U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVm
ZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVm
ZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAg
ICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUy
NjU2MGJhZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250
RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50
KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAg
ICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRl
ZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0
Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1
ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYs
NyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJU
KCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3
cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygp
KSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJj
ZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwg
U3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVl
NWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUz
NjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwog
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBA
IC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBj
bGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdn
ZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBG
b3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBm
b250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFl
ZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21p
c2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRh
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2
YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZh
MmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVF
ZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhj
bHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRB
dHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0
cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEy
IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxl
Y3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmlu
ZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMg
U3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRl
eCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2
ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAg
IFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0
YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBA
QCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2Jy
aWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0
cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZl
ciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVs
bHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3Zv
aWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFy
Y2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcg
RWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUlu
UlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUy
MzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENv
bnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJM
ICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJy
ZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5t
aW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAh
PSAidGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAw
LDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3Vy
Y2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0
YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZp
bGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJ
bWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0K
IAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYz
MDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVu
dFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxF
bGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAo
IWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
KyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNl
Tm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRB
cmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAg
IGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50
ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFu
ZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAg
IGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBk
ZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2Fi
bGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcs
NyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBh
dXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmlu
Zy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMy
NjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0
YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2
NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNl
dEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
cmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZh
Y2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBv
ZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhp
cyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmll
dyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQg
dG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSAr
Mjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRP
bmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1l
LCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBG
VFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRU
aW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0
aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGgg
JXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsy
ODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRl
RG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFy
ZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhN
RTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVu
dCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRl
bXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0
IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2
NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi45OGNhZDNlMjczMmI3NGM1
OWIzMjNiMWM5NDhjOGY2ZGU3Nzk4ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAq
IDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkK
ICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQp
CisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAg
ICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZm
ZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9k
YXRhQnVmZmVyLT5jbGVhcigpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAg
LTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jv
b2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1
cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFC
dWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAg
IHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZm
ZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3Qg
ZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9
IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1f
ZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVz
KCkgLSBkYXRhTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3
ZGE1OTA4ZDcuLmQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdjOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdv
cmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwMywx
MCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0
UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0g
dGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyBy
ZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkg
Y29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAg
ICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw3ICsxMjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmlu
ZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRp
ZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBt
X2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMx
Nzk3NGYyNzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
M2RhZmU2NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4
MTMyZDM3ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
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
aW5kZXggYzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFi
ZTViYTQ5MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1
ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBS
ZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3Vy
Y2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBj
N2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxv
YWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2Ew
NjRiYzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMy
MDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNr
aW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlm
YWRmN2I3NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVm
ZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5
LDcgKzMxNDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNs
eShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZp
ZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5
MGEwZTE1MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhi
MGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
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
cHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uMjZkZjJm
NmFmMmUyNmY2NGIzODVkNDgzOTc0ZGI0Njk1NGFkMzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJl
c291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMp
CiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFt
ZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRh
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJz
TG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9s
aWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkg
fQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIg
PSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURh
dGEtPmNsZWFyKCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsK
IH0KIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZm
ZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAv
LyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQ
b2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigp
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3Vy
Y2UoKQpAQCAtMzM0LDI0ICszMzUsMjMgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBp
ZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VE
YXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAg
ICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAg
aWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9y
ZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorU2hhcmVkQnVmZmVyKiBSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURh
dGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNl
RGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0
YS0+Y2xlYXIoKTsKKyAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NzEsNyArNTcxLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3Mg
Y29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJh
Y3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUu
CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xp
Y3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlk
UmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2Ix
YmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li40MDY1MDFlZTUzMTVhODY4NjExZWVjZTI2YzE5
NDY5NTVlMWU3OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBG
cmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
OwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRl
cik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJj
ZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJl
c291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVh
clJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9h
ZGVyKCkgY29uc3Q7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNl
UmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0
OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3Vy
Y2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0
YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJk
ZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4
ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAg
ICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uNjFjNTIy
MjRiMDllNWNjZmEyZmI0MzZjNTdiYjliMGRiYjZhNGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsOSArMzcsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQot
ICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAq
bV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNs
ZWFyKCkgeyBtX2RhdGEuY2xlYXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVz
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
NDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uYTgxZjJkMzRjNDllYzg3NTFjMGE5NWZhZGJkNWY4NmUw
NzQ2MGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQot
ICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7
CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0
ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3OCw3ICs4NzgsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQgZnJl
ZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAgICBp
ZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVhcigp
OworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9yYWdl
SUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNo
ZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAg
ICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1u
QmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBT
dHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25n
IGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFk
NGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVk
IGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1
dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAg
LTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGlu
Y2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlm
ICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURh
dGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2Uo
KSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0
YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VS
ZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxp
c3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVz
cG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAh
PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBD
RlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9
IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3Bv
bnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsy
NTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIp
OwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsK
LSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVD
RkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRy
OwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0
YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkp
OwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0
IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlw
ZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlz
IG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFh
cmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlv
bmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291
cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2Ug
aXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3Vy
Y2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3Vi
ZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0g
Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZy
YW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3Vi
ZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUg
c2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1
dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8v
IGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwo
KSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRv
Y3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAK
KwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBj
YW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhh
dmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFy
a3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdp
bmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygp
ICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0
OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIw
YWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAw
MGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
aGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJl
dHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2Rl
ZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQg
b2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwog
fQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0g
ICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0
aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBl
bmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5
KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xl
YXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRp
YXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjVi
Y2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYs
OCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3Vs
YXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygp
ICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBi
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGlu
ZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9
IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsx
NDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisK
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2Vy
Lm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5
Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+
IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBG
b250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43
MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiAr
NTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1h
Z2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tp
bnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVz
b3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAg
IHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVT
RShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBM
b2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0g
ZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2Zjkw
ODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVm
ZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNv
ZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAg
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4u
ODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRh
U2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNE
YXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0
aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBk
YXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9
CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEg
PSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggOGI4M2U1MzMxOTBhNzc2
YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRjN2Q3NTRlMTliNzU1YTljYWM1NzRi
ZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJh
Y2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0
YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsK
LSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1
ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgz
MmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1
YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVh
ckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291
cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxv
bmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEo
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9
CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hl
ZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7
IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUx
YTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2Iy
YjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3Jl
YXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBw
YXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVh
dGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9j
dW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNm
MDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29s
IENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJl
bW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNz
ZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNW
R0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50
LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBk
ZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBD
YWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZv
bnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1f
Y29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4u
YTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZh
dGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVs
ZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1l
bnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4g
bV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZH
Rm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5
ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgy
Njk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0
OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzEx
NDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2Fj
aGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVz
b3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0
NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1
MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7
CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVl
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVj
a05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
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
NmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLmI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2Vm
MDAyZWI4ODdiY2Y3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDYgKzM5LDcgQEAgY2xhc3MgTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5h
bERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRh
OwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9v
bCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29s
IG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2Uw
Yzk1YjYzZTc4ZGQwMDk3ZWYyYTU3MzQuLjliYTFkMTJiNGIwYjM3MjAyMTU0YTViNzQxMjYzNmNj
MmU0OTE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwog
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBA
QCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsK
IExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZl
cnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAs
IG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5h
bWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIg
eyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9h
ZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1
aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4
MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5mYWRlZjA1MmVmMjMxMjJk
MjYzMTIxOWYxNzJmOWNhOTA5NTQ0NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
QEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5k
aWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tp
bmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5
ODY1MzVjNjMyZDlkMmRhYzkxM2VmLi41ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0
OTViMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0
cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3Vs
ZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVj
dAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNs
b3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQg
dG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVl
dFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQw
ZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVE
YXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNk
ZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkz
ZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpT
aGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBT
aGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZv
aWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1ts
b2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxl
OwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZp
bGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwog
ICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFy
ID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAg
ICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1
MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVk
NGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4
ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7
CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAg
ICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVu
dFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5
LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBP
UlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZP
Uk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAg
ICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYK
ICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAt
MzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2Fy
ZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25z
dCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5
cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3Vy
aXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42
ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBv
cmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNl
cmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAg
ICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0
cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRl
eCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYw
NTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBA
IHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmln
aW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1
c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJz
aXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0
NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJh
YzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0Owog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEs
NyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVt
SW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1
Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewog
cHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0
cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUu
LmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAg
c3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0
ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9y
U2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1
ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVi
b2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1
ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5ZjhmOWJj
MTgzYzZmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0
ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRh
LmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGlu
ZygqdGhpcyk7CiAKICAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGll
bnQoY2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YSgqdGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi4wNmI3
NmY1OTg1MTgyYjk3M2U2M2YzOTU5Mzk0ZWE5ZDM0OWFiNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00
Myw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0
cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2
YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRl
IHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1
N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyAr
MzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNDc1NDJk
YWNhZWI4NmE1YzNhZTg4ZmViNGRmYWY0NDlmYzNlZmMzNS4uNzRjYjRiMDg0YmVhN2M3N2YzZGI4
MDVkY2I0YjNiMDhhMjNjNjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVE
YXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6
IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0K
IAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAg
LTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7Cisg
ICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
IH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
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
dApAQCAtMTc1LDYgKzE1MCwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygp
IGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90
IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKwor
Ym9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgp
OworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSgpKSwgMSk7CkBAIC0xOTYsMTAgKzE4Niw5IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZl
Q2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAg
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2Vn
bWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
CkBAIC0yMDcsMjMgKzE5NiwyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0
b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsK
ICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAg
YXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsK
ICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewog
ICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIyOSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAg
ICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAg
ICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRp
b24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9u
ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpA
QCAtMzIyLDggKzMwOSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVk
QnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsK
LSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9z
ZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyAr
MzI1LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0
CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpD
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
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4
X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5NCw3
IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0MDUsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAK
LVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NTksNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcg
KzQ3OCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1T
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVk
QnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdt
ZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3Np
dGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50
LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzUwMiwyMSBAQCBj
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIo
KSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAg
LTUwMSw3ICs1NDIsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1
MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uZDI1YjI3NmViMzI5YjBlNjI5YWM4MDY3MDQyODI0
MjE0YWQ2NGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC02MiwxNDUgKzYyLDEyOCBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwg
YWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0K
LQotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9Owot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
LSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVu
ZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRp
ZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
Qnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5k
aWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8v
IENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVk
IGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0
ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBG
SVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50
OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAg
ICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBV
U0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgJiZtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+ICYmYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+ICYmdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyICYmcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAg
ICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhICopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAg
IEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVz
PiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAg
ICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4g
Y29weURhdGEoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5k
IGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJh
eUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVm
ZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRp
Z3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdDsKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAg
c2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDksNTMgKzE5MiwxNzMgQEAgcHVibGljOgogICAg
IHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnks
IDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0g
ICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBo
YXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0
aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
IAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtl
Q29udGlndW91cygpIGNvbnN0OworCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKKyNl
bmRpZgogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQg
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1f
c2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworI2lm
IFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihH
Qnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVz
Kik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0K
K3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9y
IGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVu
dFZlY3RvciBtX3NlZ21lbnRzOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0
YWtlRGF0YSgpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0
cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAo
c2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdz
LCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpk
YXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZ
ZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7
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/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIGNsZWFyKCkgeyBtX2J1
ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIGNsZWFy
KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkK
KyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzY4LDIx
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
cAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li4wNDFkZGYw
MWFmMTJhMzhmNzY0ODQyOThiMWRlMDlhNjdjNDU4ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEz
OSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBt
X2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ291c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIw
NWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdj
NWUwMDk4Y2I2YzAwYmYyLi4yNDZiYjBkNTMxYTk3ZTIwNWVkNTZiOWEzZmZkNTk4ZjUwMDgyNDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5
KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAg
IGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxk
ZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9l
bmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRj
MWY4MjExZjJlLi5jMTVkOWZmMzUwYzIyNmJjMzUxNDIxOTQyZTUzODViN2EzMWZmOWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWdvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29u
c3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
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
Zy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0
YmVkM2Q1MGMwNi4uZTg0NjQxZmYyNjJiOTkyZTdlMGRkY2JiMjM3NDMxNzJhNDgwMDgzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNp
emU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
bih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQp
CiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90
IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0g
c291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VE
ZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7
CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihD
R0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAg
ICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBA
IC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0Rh
dGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdp
dGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVk
QnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91
bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcg
YXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2
ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwog
ICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFu
IHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2Vz
IG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFy
YW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQg
Zm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRl
ckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7
CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZjb250aWd1b3VzRGF0YSwgZGF0YS5zaXplKCks
ICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlk
ZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3
MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBm
MmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
KTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3Zp
ZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0
NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1
OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1
Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURh
dGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1
dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+
KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNl
Z21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZl
NGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRk
YTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9y
bURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RG
b3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFi
bGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJs
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi40ZDcy
NjMzZDc5OWE4NDE1Y2FlMzk2NDhkNzg3ZmU4NGZkYjYxOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIH0KIAogICAgIEZUX0ZhY2UgZnJlZVR5cGVG
YWNlOwotICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIDAsICZmcmVl
VHlwZUZhY2UpKQorICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSks
IGJ1ZmZlci5zaXplKCksIDAsICZmcmVlVHlwZUZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlw
ZUZhY2UsIGJ1ZmZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4
NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQ
bGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRf
U2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAg
ICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgp
KTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgp
OwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8
IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0K
IAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUx
ZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90
PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0
YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZm
ZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0
TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJs
ZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGYxNjA3MTVi
ZGE3NzU5ODkwMTMzNmI2M2M5NTY3YzAzMjUwYmQyNTcuLjk0NGM3MWU3MDczZTU2OTFhY2Y1ODcy
MjA0N2E5MWJjNzNkMDgxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdl
YmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3Jv
KQogewpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwog
ICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJp
dmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZm
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3
NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0
ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEo
KSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29k
ZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBk
YXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVh
ZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggZTFhMjFhMjk3NDE4YjdhNTE1ODAyODNkNTU5MDcwNTBjZTU1MmI5
MS4uZDU2YjE5ODUxNDI1NzZhNzVlOWVkMTExZDBmNjc5MmY5YzZhMGJlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NDQsNyArMzY0
NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hl
ZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1
IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAg
ICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgi
aW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBH
U1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGlu
aXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFm
ZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uNzhjYWU1YWJiNTgyZjBmMDg4YjNl
ODlhZmNlYTUzZDEwM2JiMTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihH
TWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3Vw
UGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVu
dCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERh
dGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
dW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBX
VEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2Fk
IHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVk
NzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi5lZjY5ODNkMjVmNTlhNjRhOWZlYWQxOWY3YzE2YmQ2
MTc5NDI3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgK
QEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFf
Y29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAg
IDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkg
PSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5
c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMiArNDksMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1v
bl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVs
bHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAg
ICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVh
dGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoZXh0cmFjdENlbmNJ
Zk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKTsKICAgICB9CiAK
ICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBt
X3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAg
LCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygp
KSkKICAgICB7CiAgICAgfQogCkBAIC03MiwxMCArNzEsMTAgQEAgcHVibGljOgogICAgICAgICAv
LyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5
c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVu
ZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERh
dGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
cGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBj
b25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAg
IFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxv
YWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90
ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBi
ZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0
MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZv
bnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlv
biwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNy
ZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2Jh
YWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1X
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4
OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMx
OTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZE
b2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4
OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYy
ZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3Ry
dWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3Qg
Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQn
cy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZh
cmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0
IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2Fs
IGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQx
Nl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZi
MDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNm
MzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5U
eXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBV
U0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIz
NjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElE
OwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBj
aDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkg
PDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
CiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
OyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90
Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292
ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
IHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBn
bHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292
ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCA2ZDAzODYz
YjM2NmMyNDVmNDQyZjc0MzkzNzE5YWJlYWRhNWM0YjIwLi4zMjE2YjdlZjA2ZTlhNDgwMDk5MTU5
MjMwNTZhY2EzZmNiZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0x
OTcsMTU1ICsxOTcsNiBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKICAg
ICBtX2J1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnBhZGRpbmcpLCBz
aXplb2YocGFkZGluZykpOwogfQogCi1ib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZv
bnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RHN0LCBzaXplX3Qm
IG92ZXJsYXlTcmMsIHNpemVfdCYgb3ZlcmxheUxlbmd0aCkKLXsKLSAgICBvdmVybGF5RHN0ID0g
MDsKLSAgICBvdmVybGF5U3JjID0gMDsKLSAgICBvdmVybGF5TGVuZ3RoID0gMDsKLQotICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gZm9udERhdGEtPnNpemUoKTsKLSAgICBhdXRvKiBkYXRhID0gZm9u
dERhdGEtPmRhdGEoKTsKLQotICAgIEVPVFByZWZpeCogcHJlZml4ID0gZW90SGVhZGVyLnByZWZp
eCgpOwotCi0gICAgcHJlZml4LT5mb250RGF0YVNpemUgPSBkYXRhTGVuZ3RoOwotICAgIHByZWZp
eC0+dmVyc2lvbiA9IDB4MDAwMjAwMDE7Ci0gICAgcHJlZml4LT5mbGFncyA9IDA7Ci0KLSAgICBp
ZiAoZGF0YUxlbmd0aCA8IG9mZnNldG9mKHNmbnRIZWFkZXIsIHRhYmxlcykpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHNmbnRIZWFkZXIqPihkYXRhKTsKLQotICAgIGlmIChkYXRhTGVuZ3RoIDwgb2Zm
c2V0b2Yoc2ZudEhlYWRlciwgdGFibGVzKSArIHNmbnQtPm51bVRhYmxlcyAqIHNpemVvZihUYWJs
ZURpcmVjdG9yeUVudHJ5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBoYXZl
T1MyID0gZmFsc2U7Ci0gICAgYm9vbCBoYXZlSGVhZCA9IGZhbHNlOwotICAgIGJvb2wgaGF2ZU5h
bWUgPSBmYWxzZTsKLQotICAgIGNvbnN0IEJpZ0VuZGlhblVTaG9ydCogZmFtaWx5TmFtZSA9IDA7
Ci0gICAgdW5zaWduZWQgc2hvcnQgZmFtaWx5TmFtZUxlbmd0aCA9IDA7Ci0gICAgY29uc3QgQmln
RW5kaWFuVVNob3J0KiBzdWJmYW1pbHlOYW1lID0gMDsKLSAgICB1bnNpZ25lZCBzaG9ydCBzdWJm
YW1pbHlOYW1lTGVuZ3RoID0gMDsKLSAgICBjb25zdCBCaWdFbmRpYW5VU2hvcnQqIGZ1bGxOYW1l
ID0gMDsKLSAgICB1bnNpZ25lZCBzaG9ydCBmdWxsTmFtZUxlbmd0aCA9IDA7Ci0gICAgY29uc3Qg
QmlnRW5kaWFuVVNob3J0KiB2ZXJzaW9uU3RyaW5nID0gMDsKLSAgICB1bnNpZ25lZCBzaG9ydCB2
ZXJzaW9uU3RyaW5nTGVuZ3RoID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
Zm50LT5udW1UYWJsZXM7IGkrKykgewotICAgICAgICB1bnNpZ25lZCB0YWJsZU9mZnNldCA9IHNm
bnQtPnRhYmxlc1tpXS5vZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIHRhYmxlTGVuZ3RoID0gc2Zu
dC0+dGFibGVzW2ldLmxlbmd0aDsKLQotICAgICAgICBpZiAoZGF0YUxlbmd0aCA8IHRhYmxlT2Zm
c2V0IHx8IGRhdGFMZW5ndGggPCB0YWJsZUxlbmd0aCB8fCBkYXRhTGVuZ3RoIDwgdGFibGVPZmZz
ZXQgKyB0YWJsZUxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB1
bnNpZ25lZCB0YWJsZVRhZyA9IHNmbnQtPnRhYmxlc1tpXS50YWc7Ci0gICAgICAgIHN3aXRjaCAo
dGFibGVUYWcpIHsKLSAgICAgICAgICAgIGNhc2UgJ09TLzInOgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGggPCB0YWJsZU9mZnNldCArIHNpemVv
ZihPUzJUYWJsZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaGF2ZU9TMiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IE9TMlRhYmxlKiBPUzIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IE9TMlRhYmxlKj4oZGF0
YSArIHRhYmxlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IDEwOyBqKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgtPmZvbnRQQU5P
U0Vbal0gPSBPUzItPnBhbm9zZVtqXTsKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4LT5pdGFs
aWMgPSBPUzItPmZzU2VsZWN0aW9uICYgMHgwMTsKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4
LT53ZWlnaHQgPSBPUzItPndlaWdodENsYXNzOwotICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHVzZSBPUzItPmZzVHlwZSwgYnV0IHNvbWUgVHJ1ZVR5cGUgZm9udHMgc2V0IGl0
IHRvIGFuIG92ZXItcmVzdHJpY3RpdmUgdmFsdWUuCi0gICAgICAgICAgICAgICAgICAgIC8vIFNp
bmNlIEFUUyBkb2VzIG5vdCBlbmZvcmNlIHRoaXMgb24gTWFjIE9TIFgsIHdlIGRvIG5vdCBlbmZv
cmNlIGl0IGVpdGhlci4KLSAgICAgICAgICAgICAgICAgICAgcHJlZml4LT5mc1R5cGUgPSAwOyAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
NDsgaisrKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LT51bmljb2RlUmFuZ2Vbal0g
PSBPUzItPnVuaWNvZGVSYW5nZVtqXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IDI7IGorKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeC0+Y29k
ZVBhZ2VSYW5nZVtqXSA9IE9TMi0+Y29kZVBhZ2VSYW5nZVtqXTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnaGVhZCc6Ci0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aCA8IHRh
YmxlT2Zmc2V0ICsgc2l6ZW9mKGhlYWRUYWJsZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgaGF2ZUhlYWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBoZWFkVGFibGUqIGhlYWQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGhlYWRUYWJsZSo+KGRhdGEgKyB0YWJsZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHByZWZpeC0+Y2hlY2tTdW1BZGp1c3RtZW50ID0gaGVhZC0+Y2hlY2tTdW1BZGp1c3RtZW50
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjYXNlICduYW1lJzoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhTGVuZ3RoIDwgdGFibGVPZmZzZXQgKyBvZmZzZXRvZihuYW1lVGFibGUsIG5hbWVS
ZWNvcmRzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgICAgICAgICBoYXZlTmFtZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5hbWVUYWJsZSogbmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgbmFtZVRhYmxlKj4oZGF0
YSArIHRhYmxlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBuYW1lLT5jb3VudDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUxl
bmd0aCA8IHRhYmxlT2Zmc2V0ICsgb2Zmc2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyAo
aiArIDEpICogc2l6ZW9mKG5hbWVSZWNvcmQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLT5uYW1lUmVj
b3Jkc1tqXS5wbGF0Zm9ybUlEID09IDMgJiYgbmFtZS0+bmFtZVJlY29yZHNbal0uZW5jb2RpbmdJ
RCA9PSAxICYmIG5hbWUtPm5hbWVSZWNvcmRzW2pdLmxhbmd1YWdlSUQgPT0gMHgwNDA5KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGggPCB0YWJsZU9mZnNldCAr
IG5hbWUtPnN0cmluZ09mZnNldCArIG5hbWUtPm5hbWVSZWNvcmRzW2pdLm9mZnNldCArIG5hbWUt
Pm5hbWVSZWNvcmRzW2pdLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hv
cnQgbmFtZUxlbmd0aCA9IG5hbWUtPm5hbWVSZWNvcmRzW2pdLmxlbmd0aDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCaWdFbmRpYW5VU2hvcnQqIG5hbWVTdHJpbmcgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEJpZ0VuZGlhblVTaG9ydCo+KGRhdGEgKyB0YWJsZU9mZnNldCAr
IG5hbWUtPnN0cmluZ09mZnNldCArIG5hbWUtPm5hbWVSZWNvcmRzW2pdLm9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChuYW1lLT5uYW1lUmVjb3Jkc1tqXS5uYW1lSUQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFtaWx5TmFtZUxlbmd0aCA9IG5hbWVMZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYW1pbHlOYW1lID0gbmFtZVN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJmYW1pbHlOYW1l
TGVuZ3RoID0gbmFtZUxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1YmZhbWlseU5hbWUgPSBuYW1lU3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lTGVuZ3RoID0gbmFt
ZUxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lID0g
bmFtZVN0cmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uU3RyaW5nTGVuZ3RoID0gbmFtZUxlbmd0aDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSBuYW1lU3Ry
aW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoaGF2ZU9TMiAm
JiBoYXZlSGVhZCAmJiBoYXZlTmFtZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IHByZWZpeC0+Y2hhcnNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBwcmVmaXgtPm1hZ2ljTnVt
YmVyID0gMHg1MDRjOwotICAgIHByZWZpeC0+cmVzZXJ2ZWRbMF0gPSAwOwotICAgIHByZWZpeC0+
cmVzZXJ2ZWRbMV0gPSAwOwotICAgIHByZWZpeC0+cmVzZXJ2ZWRbMl0gPSAwOwotICAgIHByZWZp
eC0+cmVzZXJ2ZWRbM10gPSAwOwotICAgIHByZWZpeC0+cGFkZGluZzEgPSAwOwotCi0gICAgZW90
SGVhZGVyLmFwcGVuZEJpZ0VuZGlhblN0cmluZyhmYW1pbHlOYW1lLCBmYW1pbHlOYW1lTGVuZ3Ro
KTsKLSAgICBlb3RIZWFkZXIuYXBwZW5kQmlnRW5kaWFuU3RyaW5nKHN1YmZhbWlseU5hbWUsIHN1
YmZhbWlseU5hbWVMZW5ndGgpOwotICAgIGVvdEhlYWRlci5hcHBlbmRCaWdFbmRpYW5TdHJpbmco
dmVyc2lvblN0cmluZywgdmVyc2lvblN0cmluZ0xlbmd0aCk7Ci0KLSAgICAvLyBJZiBwb3NzaWJs
ZSwgZW5zdXJlIHRoYXQgdGhlIGZhbWlseSBuYW1lIGlzIGEgcHJlZml4IG9mIHRoZSBmdWxsIG5h
bWUuCi0gICAgaWYgKGZ1bGxOYW1lTGVuZ3RoID49IGZhbWlseU5hbWVMZW5ndGggJiYgbWVtY21w
KGZhbWlseU5hbWUsIGZ1bGxOYW1lLCBmYW1pbHlOYW1lTGVuZ3RoKSkgewotICAgICAgICBvdmVy
bGF5U3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZnVsbE5hbWUpIC0gZGF0
YTsKLSAgICAgICAgb3ZlcmxheURzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGZhbWlseU5hbWUpIC0gZGF0YTsKLSAgICAgICAgb3ZlcmxheUxlbmd0aCA9IGZhbWlseU5hbWVM
ZW5ndGg7Ci0gICAgfQotICAgIGVvdEhlYWRlci5hcHBlbmRCaWdFbmRpYW5TdHJpbmcoZnVsbE5h
bWUsIGZ1bGxOYW1lTGVuZ3RoKTsKLQotICAgIGVvdEhlYWRlci5hcHBlbmRQYWRkaW5nU2hvcnQo
KTsKLSAgICBlb3RIZWFkZXIudXBkYXRlRU9UU2l6ZShmb250RGF0YS0+c2l6ZSgpKTsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGlu
IGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250
VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVz
ZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAogYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaAppbmRleCBmY2YxZjI3MjJmYjUxNzYyN2FlNmNjMjc3MWYyMjBkMGYyOTc4Nzcy
Li4wOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWlu
dDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZl
ciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlEc3QsIHNp
emVfdCYgb3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKIGJvb2wgcmVuYW1lRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsK
IFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIu
LjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4MzJhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRh
YmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0
aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5U
eXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6
SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRp
Y2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVp
cmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9
IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAg
ICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxH
bHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6
R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJU
YWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxH
bHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3
MTI5NWUyNDBkMjI0NDllNC4uZmRhNmNjNGRkODc2NTNhMTc4NzkzYTcwOWY3M2QwZTMxOWYxZjM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEyLDEwICsxMTIsMTEgQEAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZvbnRSZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25E
YXRhIGNyZWF0aW9uRGF0YSA9IHsgYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uLCBmb250UmVzb3Vy
Y2UucmVsZWFzZU5vbk51bGwoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpOworICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBj
cmVhdGlvbkRhdGEgPSB7IGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIGl0ZW1JbkNvbGxlY3Rpb24s
IGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CiAgICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnROYW1lLCBXVEZNb3ZlKGNyZWF0aW9u
RGF0YSkpOwogI2lmIFVTRShDT1JFX1RFWFQpCi0gICAgcmVzdWx0LT5mb250RGVzY3JpcHRvciA9
IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoYnVmZmVy
LmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgcmVzdWx0LT5mb250RGVzY3JpcHRvciA9IGFk
b3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoY29udGlndW91
c0J1ZmZlci0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICNlbmRpZgogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFm
MjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5
Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBv
dGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0
NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZv
cm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6
ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMs
IGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAs
IDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikg
ewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVz
dWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXpl
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
ICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1Nv
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
Rm9ybURhdGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5
MDUuLmM3ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwx
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
ZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uODljZmQ3MmRhODhiNTMyYTE0
YmQwZjc5M2VkNzk4MTc0OGI3MTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAg
ICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwg
YnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFk
ID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBH
ZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJv
cigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1
MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNo
YXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisg
ICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkg
PSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNv
bnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBN
b2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1Zp
ZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRl
LT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAg
ICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcs
ICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVz
cG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25z
ZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5z
KFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
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
YTA0MzEzNGM2NjQ2Li5kMWE3N2I1OGI2NDRhOTBiOTA0ZWZkYzFmZWJjNmMwNjc0NGY5MjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVy
KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAot
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51
bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNv
cHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVk
IHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25z
dCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0
ZDRiZDQ1Li5lNWYzNDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBs
b2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwg
bV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBt
X2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03
OCw5ICs3OSwxMyBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcp
IHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAg
ICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNv
bnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAg
ICAgICAgIH0KQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAg
aWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEp
Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVl
YmM1YzZlMDRhMWU4NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIxODQ3YTcy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5o
CkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAg
ICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAh
bV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0
YS0+aXNOdWxsKCk7IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAg
ICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0
ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3ODkuLjFj
MGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25z
ZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAg
ICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hP
bihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+
ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBb
Jl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9
LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4
YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5
ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBA
QCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBu
ZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5n
IHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFy
ZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZp
bGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygq
ZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Olll
cyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFj
YzVlMjljZTk2YjQuLjg2YjQ1OTk3MTZlZjQxOWY1ZDRmMTY4MjFmZjA1NDA0OTEzZmQwN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlT
dGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAs
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1l
b3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBA
IC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBO
ZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2ll
bnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5
cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1J
TUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3
aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwog
fQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9
PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJv
cnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVs
bHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5nZXQoKSA/
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
OiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNl
QnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVh
dGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwot
ICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+Y2xlYXIoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7
CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsK
ICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBw
ZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmlu
ZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3
NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVz
dEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhy
b3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9i
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNs
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3Mg
VVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9y
ZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEz
MGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRp
YyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJl
c291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9
IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291
cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsK
ICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0
N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMz
NGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRp
YyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFs
RGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
CmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMw
ZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3
LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5j
ZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRj
aERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRl
ciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0
YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2Rl
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1
YWJkODQxODRjNjMzNmM4Li4yN2ZjMWYzYTlkNmQxZTI4ZjkwZTYxYjRjYzFmY2U0Njc1YjExYjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2Fk
CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAm
JiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAg
ZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3Jr
TG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRS
ZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBh
cmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9i
dWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAg
ICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3Bh
cmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1f
cGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIg
eyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9Cisg
ICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
KG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQog
ICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChp
c1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9z
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVz
ZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJz
ID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRS
ZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9i
dWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYm
IG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAg
ICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAg
ICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9i
dWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwog
ICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVS
ZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291
bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYm
IG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+Y2xlYXIoKTsKIAogICAgIGlmIChtX3Jlc3Bv
bnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxs
cHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5jbGVhcigpOwogCiAgICAgaWYg
KG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3Vj
Y2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBN
b2RpZmllZApAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAog
ICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNO
dWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3Ry
ZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNp
dHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBi
dWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+Y2xlYXIoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jv
c3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxl
YXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBo
YW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXpl
KCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRh
LT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERh
dGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpAQCAtOTA5
LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYg
KGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
Km1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2Fk
TWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNo
cm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRN
ZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1
ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJl
bW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZm
ZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZl
cmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmlj
cykpOwogICAgIH0KQEAgLTEyNTQsMTUgKzEyNTYsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9idWZmZXJl
ZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAgICBBU1NF
UlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUg
ZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9M
T0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNl
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5
U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewog
ICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2gg
Y2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBX
VEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnBy
ZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgp
LCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUi
KTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBt
X3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVm
IHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAg
ICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3Mzcw
YTlmMTU5NTk3Zjk3Li4zNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQxNWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2
LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAw
IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJv
bm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
OjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hl
PiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247
CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVk
aXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUy
ZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNp
emUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRi
YTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBD
YWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwg
Y29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAg
ICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9
IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25h
bDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3Zl
KHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUo
KSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsK
IAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2
YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2
MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0
b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAg
IERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAg
ICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZl
ci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAg
ICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkg
PSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZl
ci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVy
biB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0
NjgzNTM2ZWEwZGM4MTkzLi4wZGUzZDIxZTAwN2Q5NWFlNzJjMzAyNzUxYzA3NDdhY2ZmNWFjNzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw2IEBA
IFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xv
YmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3Jp
Z2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVu
dHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRS
ZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlm
IChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNsZWFyKCk7CiAK
ICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVk
ZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTI3LDEwICsxMjYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEUKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAg
Y29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0Owot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNsZWFyKCk7CiAg
ICAgfQogfQogCkBAIC0xMzksMTAgKzEzOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlm
IChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkg
JiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCk7CisgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBi
dWZmZXIuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBD
cmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAg
IGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShidWZm
ZXIpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4u
Njc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21w
bGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNi
MzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkp
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVy
KSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2
MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1Ymxp
YzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQot
ICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAg
ewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5
MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4
Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6
Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVk
TWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25z
dAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4
NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVl
MDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0x
NTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6
ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAg
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNv
bnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0
YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIy
NDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2Vi
QXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAog
UmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNG
RGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBC
YWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAg
ICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWVi
YTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFj
NWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBj
b3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBv
dmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VE
YXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCkt
PmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9j
YWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
IAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAg
ICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUz
ZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90
ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHgl
ZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJu
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAK
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4ZmJlNTEyNTU2ZTE2NC4uMmMx
NjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkgKzU1LDE1IEBAIGJvb2wgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFu
ZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ0YpCi1zdGF0aWMg
dm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAqcHRyLCB2b2lkICppbmZvKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5T
aGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oaW5m
byktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJlYWJsZVJlc291
cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJl
Zj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSog
cmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCi0gICAg
ICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4KLSAgICAgICAgTlVMTCwgLy8g
cmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRpb24KLSAgICAgICAgTlVMTCwg
Ly8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0ZQotICAgICAgICBzaGFyZWFi
bGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKLSAg
ICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKLXsKLSAgICByZWYoKTsgLy8g
QmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0ZWQuCi0KLSNp
ZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNl
RGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0YXRpY19jYXN0
PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBHUmVm
UHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMo
ZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hh
cmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCB0aGlzKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKLSNlbHNlCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7Cisg
ICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0s
CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7
IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CkBA
IC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFJl
ZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25lZAogewogfQogCi1TaGFyZWFi
bGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0KK1NoYXJlYWJsZVJlc291cmNl
Ojp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU2hhcmVhYmxlUmVzb3Vy
Y2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAgLTE2Miw3ICsxMjYsNyBAQCB1
bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNy4uYTBl
ZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWFi
bGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1YmxpYzoKIAogICAgIGNsYXNzIEhh
bmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRl
OgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
d3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4g
bV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNldDsKLSAgICB1bnNpZ25lZCBt
X3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIGNvbnN0IHVuc2ln
bmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEy
MDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uMTU1ZGU3ODIxZGZiZmYzNDI5MjI2YTNlODNjZjY5
M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlm
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZl
cihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEzICsyMzQsMTMgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkgPCBi
dWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVm
ZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZm
ZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNlbmRpZgogCiAgICAgcmV0dXJu
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
NTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlm
aWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0zMDMxLDEzICszMDMxLDIzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5wdHIoKSk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9S
TShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpAQCAt
MzA5NSw3ICszMTA1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJu
IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAj
ZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5
MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1
MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29s
b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNs
YXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiAr
NzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
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
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2
NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAg
LTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07Cisg
ICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJi
ZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
CkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFy
ZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsK
ICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsK
ICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFzdGVi
b2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1
NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAt
Mjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdl
LT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAg
c2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00
NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJp
ZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApA
QCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFw
cGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3Vs
dChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAog
ICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZv
clR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAg
ICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2Fy
ZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUx
NjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJl
dEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVu
dFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlv
bihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2Vi
S2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3
ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tl
bik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIo
KTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5
ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5lMmZmZmFhNjU0OWRmNDg3Y2E2
NDFiODUyNzEyNDYzYjJhZGE5NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJV
UkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYg
cAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1f
ZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1l
SW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9
CkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRh
U2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0Rh
dGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVy
biBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOCBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlm
IChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYg
KG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1f
c3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gbV9z
eW5jRGF0YS0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBt
X3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXIt
PmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAy
MWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5iMDdjMTQ5ZmQ0ZGExNWNlZWM0YThl
ZmRhYWI3YTVhMWJlNmFkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpA
QCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE1LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAog
ICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMu
LmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpp
bmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThj
ODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1h
dGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VC
dWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9z
QWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdi
Y2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcg
KzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9u
IHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3Rl
Ym9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAg
ICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBm
b2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAg
ICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1P
cmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAg
ICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAg
ICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVF
bGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURh
dGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZh
dWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8g
ZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGlt
YWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7
IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS01vZGVsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S01vZGVsVmlldy5tbQppbmRleCA3ZTkzNzBmYTMzNjU3NjBkYTA1ZWFhMjdlNTJlYzdmMGJkMjJj
ZjAwLi42Yjg3MDBkODE5NGY0MDNhZDRkMTg4MmE3NTk2ZDk2NjFkNDMyMGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBAIC0xMjYsNyArMTI2LDcgQEAg
LSAoQk9PTCljcmVhdGVGaWxlRm9yTW9kZWw6KFdlYkNvcmU6Ok1vZGVsJiltb2RlbAogICAgIGlm
IChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIGF1dG8gYnl0ZUNvdW50ID0g
c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1v
ZGVsLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbC5kYXRhKCktPnNpemUoKSkpOworICAgIGF1dG8gYnl0
ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsIG1vZGVsLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbC5kYXRh
KCktPnNpemUoKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0g
bW9kZWwuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
ICAgICBfZmlsZVBhdGggPSBmaWxlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZm
ZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAt
MTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8g
YnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5k
bGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92
ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYw
YS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNo
YXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7
CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9y
eTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1h
Z2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNo
aXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFy
Y2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJj
aGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlB
cmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNp
emUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0
ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNs
aWVudCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUo
YXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJk
ZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJm
OWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdl
JiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdl
JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4
ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdE
ZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0Rl
bGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxs
V3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisg
ICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRF
ZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVk
aXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+
X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktp
dDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmlu
ZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVz
LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0
ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdl
JiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9B
UEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRy
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAg
ICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3Ig
KGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAg
ICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5k
ZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0
ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZp
bmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3Jl
OjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0
YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2
N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
UmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAg
ICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4o
ZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hh
cmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilz
aGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+
cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIo
KSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1w
bCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJM
LnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1
MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNj
MGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxl
UGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFj
ZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJh
NjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUs
NyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBp
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
Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3
Ny4uY2UwZDBkMTJjYTBmNWQxMGIxNThiOTBjZTE1NmI5NjJkYjc5NDk4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsy
ODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5F
bGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2Uo
bV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQog
ICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQ
bHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxT
dHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBt
X3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9p
ZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBB
U1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2
ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRp
YWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhLT5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjksOCArOTI3LDgg
QEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVh
bURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAo
bV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAg
ICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmll
dzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3Bv
bnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4K
LSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURh
dGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRh
LT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQo
KSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQt
PmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1
YmZjZDY4MDIzZjIzLi4zNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQzZGYwZGIzY2Q2MDI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAv
LyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTI1
Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51
YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVh
bFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBh
dm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGlu
Zy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNo
b3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3
YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmRlZDFkZTE5YzE5MjVkMzdiOGQzOTNl
ODVmNjVmNWI3M2EyYzI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCkBAIC03NywxMCArNzcsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBi
dWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPiht
X3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNw
b25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25z
ZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsK
KyAgICB9LCBbdGhpc10oU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlci50YWtlKCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2Fk
MmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi4xMWJiYWRiNDEyOGRmMWM4YjkyZGU0
NDNhOWQ0NmFjYTAzM2ZlMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBt
X2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJD
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
aW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3MmUwNTU2ZS4uMjk0YzI0MDcy
ZGJmZTk3ZDBjNjU3YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVz
KHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVy
cmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVi
b2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVi
b2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAv
LyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJv
YXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAt
MTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKGlwY0hhbmRs
ZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hh
bmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNo
YXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAo
IXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1J
bmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAg
cmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4
LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQp
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
OjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1l
bW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJl
ZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9
CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLmVhODk1
MmRiNTkxN2Y0MTdmYjY1YTMxOGNmMzdlYzVlZWFhZGJhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEw
Li5iZmU2MjRkNTE5M2M1MmQ5NjQxNTlmMWVmY2RjZDAxMzk0NzAwNzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBt
X3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZmZXIgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCkBAIC02OSw4ICs2OSw3IEBAIHZvaWQg
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXIt
PmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLjc2
ZmZhMTExMzkyYTlkM2I0Zjg1YjU5OGNkNmFiY2NlNTE4OGYwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAg
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
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ1OWNmYTcxMDZmMDg0NDJl
M2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4uOWI5YTk4NmMwYzk2YTgzYWNmNWI4MjllNzM2MzkwNzE3
NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTc3MzUsNyArNzczNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdo
dHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAg
IGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9j
dW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGln
aHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9s
bFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1
bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdo
dChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBp
ID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpO
byk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0
YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMy
NWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQK
ICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0
b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1
dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNm
ZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhB
VkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBt
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
OwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
CiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3Rh
bmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRf
V0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0
cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
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+
c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA3MWE3MWVkMjM2ZWI3MzAxZjUwY2E2MDQ1ZjBlZjcxZGJjYmIz
MzJhLi42Mzc4NDkzNGNmNWJiYmM2MDgxMzI2MjVhNDRkNmVhMjFhYjI5ODMxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMTEtMjEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjEgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IGZv
ciBiYXRjaCBpbWFnZSBhbmFseXNpcyAoLVtXS1dlYlZpZXcgX3N0YXJ0SW1hZ2VBbmFseXNpczpd
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcAppbmRleCAzNjkyOTcyZGVhYTc2OTRhMWI2YzFmZmZlNDE4ZTVmYTQ3MTUyNjRjLi44M2Jm
N2QwNGE0Zjg1MWNjNDMzZDYzMDhkNDA3MDk4OWEyYmEwNmI1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgpAQCAtNDAsNTIgKzQwLDUxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2lu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsK
ICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7
Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09
IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29w
eSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAg
ICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
KmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsg
MSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyKQpAQCAtOTMsMTAgKzkyLDEwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBj
aGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2Ri
eWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRh
MSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwor
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAi
SGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRl
bmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihl
eHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CkBAIC0xMDgsMTAgKzEwNywxMCBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIp
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUg
KyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24g
PSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTE0OCwxNyAr
MTQ3LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGln
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
IGJ1aWxkZXIyLmNsZWFyKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHko
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0
ZWQpCkBAIC0xNzIsMjMgKzIwNywyNSBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2Un
LCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdr
JywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDApOwogICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwog
ICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgx
MCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdo
aWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Ci0gICAgYXV0byBsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNo
ZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1
ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRh
KCksIGguc2l6ZSgpLCAiaCIpOwpAQCAtMjAyLDMwICsyMzksMzQgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxU
bykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4m
JiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChh
dXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtl
KCk7CiAgICAgfTsKICAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnfX0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsK
IAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGJ1ZmZl
cjEpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycs
ICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0p
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7
CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0g
YnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsK
LSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5jbGVhcigpOworICAgIGJ1ZmZlciA9
IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIi
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
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>444997</attachid>
            <date>2021-11-22 20:46:30 -0800</date>
            <delta_ts>2021-11-22 21:14:47 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123154628.patch</filename>
            <type>text/plain</type>
            <size>371620</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjYTYwNGFiZDZhZmRm
NDI1NTNkZmFjYmU3Yjg0MDc0OTdhMjk3Mi4uMzhmZWI4NTQyNjY0Y2ZlMzJjNjBhYjJhNWRjMGVi
MmQ5Nzg1MTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOCBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6
CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6
bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBl
ckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRl
bGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBs
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
CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9z
aXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlv
bjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVi
b2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
cGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVy
RnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsYXJpZnkgdGhlIGJlaGF2
aW9yIG9mIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzU2NTc0NDkyNzQ4
YjNkMDdkNzcwZDE3NTJkYTY1NDE2ZTU2OWRhLi44ZDM0MjM5MDM1NTg2ZmUxMjQ0Y2I0ZWM2MWIw
OWViYzEyYzg3NjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAg
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
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFj
aG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChB
UEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpk
aWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
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
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3Qp
OgorCiAyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9y
eSBpbnRvIGEgU2hhcmVkQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3
MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlhMmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYx
MzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRp
b246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06
CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24g
ZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAg
ICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdW
YWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3Jh
dGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBh
MDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lk
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVy
OjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJv
bVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1
cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXpl
ID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0
NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBu
c0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAg
ICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwg
bV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBh
YWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRS
ZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJl
c2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRh
dGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJv
cGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBj
M2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpS
ZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBb
Jl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZv
cm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBb
XSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0
YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEzY2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMw
MCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9z
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJl
Y29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
IHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChy
ZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRp
b24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxG
ZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChh
dXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
Ym9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9p
ZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYg
cmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0
YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5
Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9u
c2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJl
c3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMw
Ni4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsx
MzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VC
b2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
Zm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNv
cHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8v
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVk
IGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAg
IH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNv
bnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5
LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxw
dHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6
UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVl
Li5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMm
KTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3Qg
UmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJm
NWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBl
MjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwj
Zm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9
IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3
ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwog
ICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0
VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0Fy
cmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51
dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTlj
MDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29s
IGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBi
KQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3Ro
ICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6
bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVt
Y21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAog
Ym9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBA
IC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNl
OjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwot
ICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCks
IHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6
ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUs
IE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwg
cGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYx
MmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBp
ZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7
Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93
bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNp
emUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlz
ZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFp
bnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3
Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0
CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1E
YXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5k
YXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5
OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2Nv
bnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAo
aXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZl
dGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlm
IChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNv
ZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNv
ZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50
b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1
cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5
KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3Ro
KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3Mo
KSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBi
YWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5
YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1E
YXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0
YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEp
IHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4
NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUw
ZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNv
CiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAg
ICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92
ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZy
b20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwg
Y29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25z
dW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgp
OwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBj
b250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VG
b3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQog
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+Pigq
Zm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlw
ZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1
ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJl
dHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4u
ZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDgg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFu
IGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZv
aWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0
X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAg
ICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAg
ICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAg
ICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAg
ICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAg
ICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRm
OWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3Nzhk
MWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3Ry
ZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3Bv
bnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVm
PFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRh
KFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5
Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQw
ZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUo
KSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCks
IDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBl
MmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0
ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcg
KzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQx
NDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7
CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0
YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZj
MzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2
Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51
bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXll
ZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQog
ICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2Rl
S2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXko
Y29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1
NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJ
REJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1
M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwog
ICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFu
c2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQ
YXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEx
NzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9y
ZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFz
ZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBp
ZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNy
ZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJ
REJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5k
ZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3Mg
fTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBA
IC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJh
bnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4g
b2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRv
IGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBi
ZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBp
biBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAo
a2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAg
ICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVs
bCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVw
cGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQK
IAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBv
bmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJh
bmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93
ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJf
cyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7
CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwog
ICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2
MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkp
OwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAq
YnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3Jl
YXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwog
ICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50
KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0
MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFh
MDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJl
YWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRv
JiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+
ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAg
IG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmlu
ZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQw
ODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1l
c3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVy
PiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAg
IH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3Ry
aW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0
ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFmNjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9h
CiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2Rl
bDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRh
LnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVU
eXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFu
ZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjllOTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2Rl
bEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVBy
ZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5l
UHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVt
cG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZpZXcsCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFy
RmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJlY3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojpt
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOworICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGlyZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5
RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGly
ZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZGly
ZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGly
ZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3
ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAg
IGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKKyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUp
OworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBpZiAoZmlsZSA8PSAwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sKKyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxl
UGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAgIGNyZWF0ZUZpbGUoKTsKKworICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0
TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxF
bGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZp
ZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJl
dmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAg
ICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmll
dygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9p
bmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpOworfQorCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1
dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdz
KCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodXVp
ZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykgeworICAgICAg
ICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9i
dGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAl
cy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0u
VVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0co
TW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNv
bnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3Ig
VVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50
KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2aWV3IGxheWVyXTsKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRk
MjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
TW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0
YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5k
ZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5
OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRp
YyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxv
YWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01F
eGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJO
b3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwg
WyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5
NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRm
NGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFt
X2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAg
IG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7Cisg
ICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1f
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgq
bV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAg
ICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmco
KTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNC
dWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0
YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwog
ICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUgU3Ry
aW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29s
PiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0
Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNW
R0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9z
dmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAg
ICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVk
T1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9u
dC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmco
KSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2lu
RG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2Ug
aWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0
ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVk
aWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3Ro
KCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3Jh
cHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEy
M2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250
U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYg
QEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRG
YWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9u
dHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2Fk
UmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50
ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBt
X2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2Fh
NC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsK
LSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIx
MWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xh
c3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVk
aXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1Mzcs
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2Rl
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFs
b25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZv
KEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToK
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
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
CmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEw
MGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9y
OjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYg
YXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9u
dDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJp
YnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVk
U3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAo
IWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0
YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
UyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0
ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAK
IFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBA
IFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6Omdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZl
Y3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
IGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8g
ZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAg
ICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAg
ICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwx
MiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVy
RGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0
V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
CiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNm
ZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJW
aXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxl
U3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
REZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7
IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAg
ICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4
MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlm
OWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAog
ICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkp
IHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAg
ICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwi
KSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
ICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1l
bnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAg
ICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJy
ZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtm
aWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7
CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZp
bGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
IChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAg
ICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byog
cmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgy
Yjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3
MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAg
ICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAg
fTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnkt
PnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNo
bWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0
YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0
RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFn
bWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9
ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAg
ICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3
ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVU
eXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0
YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBN
YXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
IH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1
cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEs
NyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRS
ZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6
ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJm
cmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFt
ZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9j
dW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dN
SU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5w
cmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBi
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODky
ZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUg
QEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1
bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVl
IHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNl
ZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9T
IFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3Qg
U3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxl
c2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVu
dHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQu
dHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0
dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0co
RlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVt
cGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgp
LT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxk
IHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1l
bnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2Ug
Z2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0
NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVk
NDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBp
ZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAg
ICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0
NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2Mz
NDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEy
ICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNv
bnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7
CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0
ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFz
ZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4
MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiAr
MTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZy
YW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRl
bnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7Cisg
ICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAy
YzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChh
dXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3
YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlm
MTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxv
YWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vz
c0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigp
LCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNh
bm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4
ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1
dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQg
PSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdj
ZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwog
Y2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAg
ICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkK
ICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jl
c291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0
YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAg
ICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25v
dXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQx
MDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVz
ZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
KSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwg
eyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5
YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5y
ZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAt
MzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVu
dGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAg
ICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCku
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9n
U3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZk
N2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFm
YjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3
IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50Kiwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2
aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYg
PSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVz
dCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkw
NmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZj
NjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7
CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUg
TUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3Qg
dG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlv
biBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGgg
Q0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2
MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4
MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRp
ZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNv
dXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVt
b3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRo
KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291
cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3
Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0
YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8g
YSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBw
b3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAv
LyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNh
bmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0
aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNl
KHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90
IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsK
KyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3
MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNw
b25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3Vz
bHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEu
LjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkg
OiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0
MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAg
ICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAg
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQt
PmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNv
bHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1
ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJj
ZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkg
Q0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0
YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAg
ICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5
IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVz
b3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAg
CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5n
ZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAt
MjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlz
IG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNp
b24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0
VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5u
b3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3Vy
Y2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAg
ICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5n
ZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFw
bGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0
KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBl
Y3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJh
Y3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5
NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwg
cm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5S
ZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0
ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJj
ZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAg
ICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAg
ICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcg
KzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2Ug
PSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCBy
ZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJs
ZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcg
KzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJh
bWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3Jh
cCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQg
aW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3Ig
ZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFt
ZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwi
IHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJh
bWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFk
NGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewot
ICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2
ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1F
VHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2Rl
ZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2Vu
ZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNl
dEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUg
dGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0
IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2Rl
Y29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBt
X2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2Rl
ZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBh
bmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNh
ZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2
b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50
KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9
CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xs
ZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewog
ICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdy
YXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJl
ZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsK
ICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAg
ICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwg
aXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQg
Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwog
ICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAg
ICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVm
NDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1f
bG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1
c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0
YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENy
ZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNv
bnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQ
bGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYp
OwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwor
ICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0
YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3
YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50
ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEt
PnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9v
bCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJl
dHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5z
ZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAg
ICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFH
RV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJ
bWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdl
dCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3Vt
ZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGlt
YWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBw
b3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2
MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlm
NDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdl
RGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVz
IHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVm
MDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2Rl
ZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBA
IC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZm
ZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAg
ICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0g
ICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+
ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChp
bmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4
Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJl
ZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291
cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBA
IC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+
YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAg
ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4
Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZm
ZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
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
OWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0
NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJh
bWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVt
ZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBt
X3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29u
dGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAg
IH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBh
OGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZj
YTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAg
ICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29w
ZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNl
dENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQo
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vy
cm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAg
ICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3Rl
VVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVy
dGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkp
Ci0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52
YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRl
eCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5
MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdG
b250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250
RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsK
ICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRl
OGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlm
ZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2go
KQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAo
ZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5
ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3
ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6
OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRh
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4g
d2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0Njdh
Mjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpl
bmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0
YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJh
NWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAg
LTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25z
ZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBE
aXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJh
Y2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklE
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1v
bml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRl
eCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNi
YTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3
ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUg
d2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25p
dG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9y
Ojp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNw
b25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBl
ZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNr
Q2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNo
ZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFj
a2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNo
ZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nl
c3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUy
ZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRl
eHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2Mjhm
YjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFi
YzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAg
Y29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdo
YXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0
aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1
bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUg
YWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJT
dHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5
bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMx
ZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3
Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVj
dCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZh
ZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRm
MjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVh
ZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFS
ZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBt
X2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAor
CiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEs
MTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRl
eCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmls
ZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdG
aWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAg
IGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShm
aWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNS
ZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkg
ewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsg
fSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4
ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZk
OGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRh
NzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBE
cmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3Rl
Ym9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRl
bnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1M
Rm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnRE
YXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERh
dGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47
CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJD
T1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lm
ICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBj
bGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsK
ICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1M
Q2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlw
ZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBs
YXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNX
aXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29u
c3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29u
dGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2
N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0
cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0
b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2lu
Q3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1
c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFz
dGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2Rl
cigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZj
M2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDgg
KzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikg
eyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2Uw
MmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAx
MWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENv
bnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGlu
Zyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRp
ZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhm
ODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBm
aW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5T
bWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZv
cm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAg
ICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0
YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0
NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3Ry
dWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03
MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2Fy
ZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlw
ZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAt
OTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFk
U3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRp
dGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAx
ZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3
ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFj
aG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVz
OwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAK
ICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRhY2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZj
M2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50
OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHBy
b3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92
ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
K30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYg
Kzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1
ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1v
ZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlV
c2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wg
bWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAg
ICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2
ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
dmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0Rh
dGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVf
dCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAg
KzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
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
U2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmlu
ZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpp
c0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCAr
MTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2
ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAg
IG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVs
ZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNl
Z21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJp
bmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
dmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
YXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsK
ICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewog
ICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIzMiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAg
ICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAg
ICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRp
b24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9u
ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpA
QCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVk
QnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsK
LSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9z
ZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyAr
MzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0
CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpD
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
dHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4
X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3
IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAK
LVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcg
KzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1T
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVk
QnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdt
ZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3Np
dGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50
LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBj
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIo
KSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAg
LTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1
MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uOWM4ODI0MDMwMTgwMzhiNTFhOGNmMmM0ZjhkMDRl
OWI5YTQyYzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYy
LDE0NSArNjIsMTQxIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0
ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsg
fQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1h
cHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7
CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFU
SU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJl
dGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0
YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENG
RGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNp
ZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyop
OwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGlu
ZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBv
bmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBz
ZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBB
dWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0
aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lk
cyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUg
KFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4
dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
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
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNv
bnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6
ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3Zp
ZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAK
LSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikK
LSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRp
ZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAg
ICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rv
cjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVj
dG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRl
R0J5dGVzKCkgY29uc3Q7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAg
ICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRp
ZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQ
cm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciYmKTsKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMg
dGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIg
d2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
RW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkg
Y29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHko
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6
ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDksNTMgKzIwNSw5OCBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47
CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBi
b29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc09u
ZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUs
IHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0
U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0g
ICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25z
dDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNo
YXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
Jik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250
aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAg
Ym9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUlu
dG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRo
ZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNs
ZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7
Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07
Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9Owog
CisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxv
d3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxh
dGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJl
ZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
c3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAg
ICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1
cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdp
bGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBw
ZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGlu
ZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBw
aW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0Yp
CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4
dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjUsMjEgKzMwNiwyMSBA
QCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXpl
ID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRh
KCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29u
c3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRl
MTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdB
cHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkp
OwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3
b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8u
YXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9B
cnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+
c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2Mw
N2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0
N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQog
ICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRh
dGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFf
MCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZh
YjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAg
IHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
aW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0MWE1
NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxs
b3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVu
Y3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgog
I2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1f
c2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAz
MThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNm
Y2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6
dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1z
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRp
ZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZG
VG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1h
cEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2Ug
cmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7
IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAK
QEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNX
aXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5
Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAg
LTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBp
bnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29u
c3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2Vy
KXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBX
ZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0
aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
KWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVn
ZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlv
biBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0
KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRh
KCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0
YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAg
IGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNy
ZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgp
ID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNy
ZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJj
ZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQogCi1S
ZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEo
KSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxv
Y10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5
ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2Jq
ZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRo
ZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07
CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBp
ZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4
YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1Zjcx
OTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3
ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGlu
aXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcg
KzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8
ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2Jq
ZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAg
IC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhl
IGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUg
a2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0
QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0
YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2Jm
MDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uMDQxZGRmMDFhZjEyYTM4Zjc2
NDg0Mjk4YjFkZTA5YTY3YzQ1OGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkg
QEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8
IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
ZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXpl
KCkpOworICAgIHJldHVybiBDb250aWdvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIu
YnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVk
OGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMw
MGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9h
cnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydCht
X3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBH
UmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3Zhcmlh
bnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4u
YzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
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
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2
NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEy
ZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1f
cGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVx
dWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAg
ICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1
ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUw
YzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVu
c2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQq
IGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAg
ICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNl
U2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VT
aXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwx
NSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNp
ZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0
aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIn
cyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlz
LCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rl
ci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAj
ZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8g
V2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdl
dEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHBy
b3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0
aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNp
bmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0
Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRC
eXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNpemUoKSwgJnByb3Zp
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
ZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2MzNkNzk5
YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7Ci0g
ICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0
IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFj
ZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgYnVmZmVy
LnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwg
YnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmlu
ZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFl
YmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3Rf
Q2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWly
b0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAg
IEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0y
NjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVT
aXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYg
VVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2Yu
LjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1h
cHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNp
emUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0
IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4
OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkx
YmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0
Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBA
IC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQog
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
LmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkxLi5kNTZi
MTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcg
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0
RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRh
dGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgp
LT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERh
dGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQy
NzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi43OGNhZTVhYmI1ODJmMGYwODhiM2U4OWFmY2Vh
NTNkMTAzYmIxMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQ
YXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIg
bWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJr
dXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNl
ZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUo
dW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBh
eWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQw
YWNmMWQzNDJhNDY0N2QyZjEuLjNjNGQyYjA3ODk0ZjRmYzU2YWYxNTM0YTM5YjgyNmEzYWIzM2E4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgs
OCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3Bh
eWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1
aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5
cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAi
Y2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
cGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAg
ICAgIHBheWxvYWQuYXBwZW5kKHBhcnNlUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAg
LCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7
CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAg
ICAgICAgICAgICAgICBwYXlsb2FkLmFwcGVuZChwYXJzZVBheWxvYWQucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXRE
YXRhKQpAQCAtNzIsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVy
eSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXRE
YXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBh
eWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25z
dCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2Fk
KCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9h
ZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2
ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZh
MTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNl
NmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRh
KGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFu
dCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJk
My4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9S
VCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMw
YzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWEx
ZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAg
IGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAg
c3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRl
bmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6
QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
cGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZh
bmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhl
cmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkK
QEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVC
YXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
aV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlw
aEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4o
YnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMg
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5
cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVj
dGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0
cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBj
b3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFs
R2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhD
b25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZv
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAg
Y29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1h
dGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5
cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRk
NDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1
OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNz
IE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRI
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQog
ICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMw
NDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
LmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWlu
dDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1
aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVp
bnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4g
MDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFi
bGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNh
dXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNh
c3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29u
c3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQ
dHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zm
c2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDog
Q292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVX
aXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSog
Y292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAg
ICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90
JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+
Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1
OTIzMDU2YWNhM2ZjYmY5MmQxYS4uOTc0MDhhODhlMDZkOTNjYzYzOWY2NDcyZjczMzQ4NmJhNDUy
YzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1l
IHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0
YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5h
bWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBv
biBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9u
dERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVu
Rm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXpl
KCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
c2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW4KIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKLSAgICBp
ZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCisg
ICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLm1ha2VDb250aWd1b3VzKCksIGZvbnROYW1lLCBy
ZXdyaXR0ZW5Gb250RGF0YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBEV09SRCBudW1G
b250cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0
MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi42OGNhZjRkOWIxMjQ4OWQ5ZDhlNWQzYjBhYWRkMDAz
NWNjYzIxNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wg
cmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWlu
dDhfdD4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiBSZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJi
Li4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lk
dGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVu
VHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6
OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0
aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1
aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEg
PSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwog
ICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQg
T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2Fs
R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VC
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2Fs
R2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1
NzEyOTVlMjQwZDIyNDQ5ZTQuLmZkYTZjYzRkZDg3NjUzYTE3ODc5M2E3MDlmNzNkMGUzMTlmMWYz
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTExMiwxMCArMTEyLDExIEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVzb3VyY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9u
RGF0YSBjcmVhdGlvbkRhdGEgPSB7IGJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbiwgZm9udFJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEg
Y3JlYXRpb25EYXRhID0geyBjb250aWd1b3VzQnVmZmVyLmdldCgpLCBpdGVtSW5Db2xsZWN0aW9u
LCBmb250UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9OwogICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250TmFtZSwgV1RGTW92ZShjcmVhdGlv
bkRhdGEpKTsKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIHJlc3VsdC0+Zm9udERlc2NyaXB0b3Ig
PSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGJ1ZmZl
ci5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIHJlc3VsdC0+Zm9udERlc2NyaXB0b3IgPSBh
ZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGNvbnRpZ3Vv
dXNCdWZmZXItPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAjZW5kaWYKICAgICByZXR1cm4gcmVz
dWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMx
ZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2
OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAt
OTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0g
b3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1
NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRm
b3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNp
emUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAg
ICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRj
LCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAw
LCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1Ip
IHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJl
c3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6
ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAx
NjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li43ZjRkMDk2MjAwNTY5MTY2
ZDc1MTk2Mzg5MmM4ODlkZDUyNDc3OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
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
ICAgICB9CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKilrVVRUeXBlRmxhdFJURkRdOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
KQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0
YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtV
VFR5cGVSVEZdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNv
bnRlbnQuZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOwogCiAgICAgaWYgKCFjb250ZW50
LmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIE5TRGF0YSAqaHRtbEFzRGF0
YSA9IFsoTlNTdHJpbmcgKiljb250ZW50LmRhdGFJbkhUTUxGb3JtYXQgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwpAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJF
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
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
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
M2IyOGJiZDEwMjUwYWFjYzMzYjVkYWMwZjFkYmJjZDhiNWU1MWQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTExNiwyMyArMTE2
LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGF1dG8gd2ViQXJj
aGl2ZVR5cGUgPSBicmlkZ2VfY2FzdChhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIENGU1RSKCJBcHBsZSBXZWIgQXJj
aGl2ZSBwYXN0ZWJvYXJkIHR5cGUiKSwgbnVsbHB0cikpKTsKICAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBl
LmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRGREZv
cm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRh
dGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJk
VHlwZVJURkRdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVu
dC0+ZGF0YUluUlRGREZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CiAgICAgICAgIGlmICh3ZWJDb250ZW50
LT5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
TlNQYXN0ZWJvYXJkVHlwZVJURl07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CiAgICAgICAgIGlmICgh
d2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdCBmb3JUeXBl
Ok5TUGFzdGVib2FyZFR5cGVIVE1MXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5T
dHJpbmdGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3Ry
aW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5
cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50
LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5n
ZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5j
bGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0
KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAg
IGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJp
bmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNz
QWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0
KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5
YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVm
NjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
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
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
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
NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjg5Y2ZkNzJkYTg4YjUzMmExNGJkMGY3OTNlZDc5ODE3
NDhiNzE0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5
dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQp
Ci0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkg
PSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVk
YmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAy
YjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVy
ID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxB
U0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3Bv
bnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmco
InZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcg
KzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAg
ICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1
Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNl
bnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkp
LnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmco
cmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3Bs
aXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFs
aWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3
NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUwYWIzOWI5ZDY2ZjYw
ZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUgQEAgdm9pZCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYm
ICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAg
ICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAg
ICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAg
IG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsK
KyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICAgICAgaWYgKGNv
bnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJy
ZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYy
Nzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0g
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
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZl
MDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3
MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1
bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxv
YWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxs
b3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2
YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3Qg
Y2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAg
IFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdl
NzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0Mjhh
M2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90
ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29k
ZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgp
IDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAg
ICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uYjc3ODkz
MmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1l
dHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4u
OTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXpl
ID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5m
ZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6
ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QK
ICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBb
XShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBG
SVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxs
cHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNv
cmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3Vs
dC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7Cisg
ICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAg
IHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTky
NmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5
NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6
OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEg
aGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRh
IGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1f
YnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQo
KSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1f
a2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWVi
YzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICBy
ZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2
M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAg
LTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVs
dDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIp
OwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4g
bV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNF
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
MjFiZDQ5MmQ2NTMzNzRjLi4xNTVkZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2NmNjkzZDZkYWI0Mjkz
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
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdl
dCgpKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXB0QnVmZmVy
JiBzY3JpcHQpCiB7CkBAIC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNv
ZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhh
bmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFm
YjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1
cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2
MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0
ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVj
NzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIz
YzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFT
UyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdl
KSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wg
aGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlh
YTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1
OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
CiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45
NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
QEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAg
IHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0x
NzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFs
aXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3YzA3NmVj
ZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2YzgyMTI5YTYw
MTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdo
bGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhp
Z2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAot
ICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMo
W1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdo
bGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBp
bWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGln
aGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAg
PT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6Okhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3
Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdp
bmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQw
Y2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhj
ZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9
IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXpl
KCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRl
eCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMy
YjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZm
ZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxi
dW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
YThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdiY2Jh
YWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4
MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdp
dGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9h
cmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAg
ICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1
c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAg
fQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1Pcmln
aW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBp
ZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9uU2hl
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
dGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
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
NzMwZTYyYTEuLjI5NGMyNDA3MmRiZmU5N2QwYzY1N2I5Y2Y4ZTYxMGM2YTFiNGM3ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4
dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJl
cGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBW
ZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlk
ZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNz
IGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIGlwY0hhbmRsZTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uZWE4OTUy
ZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRl
eCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdm
OGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgp
OwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRh
dGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAg
IGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFn
ZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZl
U2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAg
ICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45Mjli
MTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3Ry
aW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5n
KCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0Fz
U3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0
Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJh
bWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9y
KCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFi
ODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpA
QCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0j
aWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAg
ICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
QEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0
CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVS
TkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUy
MWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0K
QEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wp
cmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZh
N2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJ
bnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYp
IGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZv
ckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2
MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1
ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIu
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2Vi
S2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZi
NzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2
YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwx
NCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRp
ZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
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
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2
ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0
VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7
CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1
ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3
MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpA
QCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2Vi
RG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5k
ZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVh
YTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3
ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9j
dW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7
ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBb
X3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEo
KTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3Vy
Y2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJu
IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRh
ID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMz
ODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0
MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewog
ICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2Ut
PmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkg
bGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRP
YmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+
c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0
ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2Uz
NGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2Mywy
MSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVj
b2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAg
YXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAg
IE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAg
TlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5j
b2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1
cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVU
eXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsK
ICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNw
b25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07Cisg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0
YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VV
UkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVz
b3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGlu
ZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIs
NyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2Up
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ut
PmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAt
IChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRp
bjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxw
dHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBj
b3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYWM4MDVmM2IyODgxYTdmMGQ2MzZjZDQwYWE0MDdjMGU4MjIxZTBlLi4zODQ1MmI0
ZmJiMzc4ZjY4MjliYzgyNWEyMGYxNWMxOTc0ZjNkZDcwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjIg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjIgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBzaGFyaW5nIG9mIHVubGlua2VkIGJhc2VsaW5l
IGNvZGUgcG9zc2libGUgb24gSlNWQUxVRTMyXzY0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGEx
YjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5
ZWY3YjZjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCkBAIC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNz
aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikp
OwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVY
UEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmco
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5n
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAg
ICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVy
LT5jbGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiAr
ODAsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5k
QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250
aWd1b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEi
LCAxKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVm
ZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0
YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNo
YXJlZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6
ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpA
QCAtMTcyLDMwICsxNzMsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0g
eydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2Yn
LCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICds
J307Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcg
fTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAg
ICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlq
a2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoNik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7
CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNk
LnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwg
ImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAg
ICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVy
KGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5k
YXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBi
dWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5k
YXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0
YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNp
emUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFB
c0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwog
fQogCkBAIC0yMDcsMTUgKzIxMSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAg
ICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgp
LCBidWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAn
Yid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwg
eydhJ319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdi
JywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsg
J2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2En
IH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGVi
MTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0s
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444998</attachid>
            <date>2021-11-22 21:14:55 -0800</date>
            <delta_ts>2021-11-22 21:18:17 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123161453.patch</filename>
            <type>text/plain</type>
            <size>371656</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYzA2OWM0NWY1MjM0MGQ5YTE1NDJmZTY5ZDYxODlh
YjkwNGZhMmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOCBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6
CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6
bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBl
ckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRl
bGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBs
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
CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9z
aXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlv
bjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVi
b2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
cGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVy
RnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5nIGFyZ3Vt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGU1NmMyMzVhZDcxODkyMTVlNTU4NDMyYWRhYmYwYmY0YzE1OTFiZTIu
LjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE5IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRl
Y29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRh
KToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
dG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5Q
ZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVs
ZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTEtMjEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBj
b3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2ZTcxYWQzODJlMjdjODMwYTUyNWFkOTUwZjMzM2Y0
OWEyZTE1Y2NjLi5jZTUwY2VjYTI1OTRkYTVlZjEzN2NmM2I2ZmIzOTU5ZTk0YTQ5ZWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMTEtMjIgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1M
SW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBk
YXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAg
ICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJj
ZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTEtMTYgIE5pa29s
YW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1l
IFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNvcmF0aW9uTGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1
YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5
MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAg
IFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVU
RjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkK
ICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYx
ZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1
OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJv
YXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImlt
YWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUlt
YWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRh
dGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZSht
X2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNE
YXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRj
NTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhj
ODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdl
ID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5p
bF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRt
YXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAg
IE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBl
Ok5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
aW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2
ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9k
eVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0g
MDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9
LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNv
bnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3Vs
dCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXgg
OTA5OGUwNWFmNGM4NDMzYjNkMTNiMzk1NjUwNjRhOWMxNTQzMzg3ZC4uNmI5MTNlNDcwM2YwMTNj
MTNjZTdhNjIwYmEwOGVhYzljNTM2MTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKQEAgLTMwMCwxMyArMzAwLDEzIEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFs
bChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRh
c2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNl
Qm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3VzKCkpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBS
ZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lk
IERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
JiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkg
ewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24g
PSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6
UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQ
dXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8m
JiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlz
LT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRh
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBl
NDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2Ez
MWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9p
ZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0
Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+
JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJi
MjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4
ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRl
ZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAg
ICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUg
aW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVz
cG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29weVJl
ZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3Bv
bnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigp
OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcw
ZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJj
Y2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlv
bkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNh
Y2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFk
ZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9k
eSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQ
T1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcw
NzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFy
ZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1y
ZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUo
KSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJ
REJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAg
IGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRh
dGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
aW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYy
ZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVm
ZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUo
KTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBs
ZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMo
Y29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlv
bmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1
cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYg
cGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFy
cmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFm
ZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFm
NTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJv
ZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1E
YXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZl
V2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVm
ZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5y
ZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hh
cmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBG
SVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2Ug
ZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRj
aEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAg
ICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAg
aWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1E
YXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2Uo
KQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcs
MTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0
dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1z
KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5l
bmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmlu
ZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlC
dWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHko
KS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVy
VmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJy
YXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5
dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4
ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7
CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNG
b3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1
Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBlMGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1
LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNv
bnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlw
ZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAg
ICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAg
IGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBl
LCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBA
IFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZl
cikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOCht
X2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1ZDQ1MmNlMjg4Y2Vk
YzAyOTMyZDkzOTZmNjQ2MDA0NmU0NmJkNTM2Li5lNGU5MDhmMmJjOWEwNjgzMGU2NGJhYzVkMzEw
MGM4ODBhYjdjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmsp
OwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0
YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAg
ICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0
YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAg
ICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IGJjNTg1NGY5Yjk2NmZiNjMyOWQxNmZkZTYxOGNjZWIxZDhj
OTRjYTkuLmExNjA3NDdkZTBjZWFjZWVjYzc3OGQxZmY3YjVmYjJhZTBlYTE4M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNl
bCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcg
UmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1l
Qm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJv
ZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEz
NTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01
Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMy
ZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3Qg
aGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWdu
YXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0
byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3Vz
QnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2Nj
YzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRo
KQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0y
ODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURh
dGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChT
SURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3Qg
dWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRl
eCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVm
NDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMy
LDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBk
ZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsK
IGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2
ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4
NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3
IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVj
dFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNh
Y3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYg
KCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBp
bmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07
CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAgIGhh
c1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5
IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9y
IGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZh
bHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUg
dmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBl
eGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJU
cmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24p
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9
OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29y
ZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9
IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9
IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMz
LDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdl
LnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURh
dGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVj
b3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkg
JiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29y
ZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1
MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3Vu
dChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9
IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJL
ZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAgIGF1
dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAo
IWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBs
b3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1cHBl
cktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDog
cmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9w
ZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNi
ZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1
YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJv
b2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5k
QmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIg
a2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2Fy
eSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQt
PmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0
YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHAKaW5kZXggYWZlZjQzMjhjNmFjMjBiNmE0NjIxZmRlOGM0ZmRlZTYy
Yjk2N2FhMy4uMDAyNzU3MDgwMmIxNGIwOWQxYWEwNGZjZjQ3YzU4MDljMDljMWEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFJU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRv
U2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdl
cykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwg
bWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsK
IAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5Mzhh
OWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24o
bWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBb
Jl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCBhZTdi
MmUyZmNhMGQzN2FhNTM5OTlmYTYyODRhNDU5YTRlNDczMWFjLi5iZWY0ZDJkN2FjN2VlY2Q5MTdj
MWY2NDNhNTI3ZTVkNjc3NjI0ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0
LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0
ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25O
dWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBt
X21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAg
ICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUxMWYwNGIyYjMyNjBmNmJmODYyMjM3ZmEy
OWU5MGNkNTZjOGRkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0KQEAgLTAsMCArMSwxMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgorCisjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5o
PgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09GVF9MSU5L
X0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUoKQoreworICAgIC8vIFRo
ZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBuYXR1cmUgb2Yg
QVNWSW5saW5lUHJldmlldywKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3NTY3LgorCisgICAgY2xlYXJGaWxlKCk7CisKKyAgICBhdXRvIHBhdGhUb0Rp
cmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7
CisgICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9E
aXJlY3RvcnkpOworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZpbGVU
eXBlOjpEaXJlY3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbmVlZCB0
byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCisgICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06
OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoi
OworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CisgICAgYXV0byBmaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwor
ICAgIGlmIChmaWxlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIG1fZmlsZVBh
dGggPSBmaWxlUGF0aDsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUoKQor
eworICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1w
dHlTdHJpbmcoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgp
Cit7CisgICAgY3JlYXRlRmlsZSgpOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
c2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOwor
CisgICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5z
dGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKV0pOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojpt
b2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYg
eCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0Zjgo
KS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAoYXV0byog
cGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRoRmls
ZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmlu
Zywgc2l6ZSk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9i
dGFpbkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKK3sK
KyAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5lUHJldmll
dyB1dWlkXS5VVUlEU3RyaW5nKSB7CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9k
ZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNtYXRj
aCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgKChT
dHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX2lubGluZVByZXZpZXcgc2V0UmVtb3Rl
Q29udGV4dDpjb250ZXh0SWRdOworICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVt
ZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFi
bGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKworUGxhdGZvcm1MYXllciogSFRN
TE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2lu
bGluZVByZXZpZXcgbGF5ZXJdOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVs
TG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYw
YTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMy
YzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAg
LTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5
RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVz
ZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7
CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhh
bmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwg
Ynl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3
ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNw
b25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+
ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAg
IH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRl
cyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+Zmlu
YWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJv
dmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5i
OTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgK
QEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBp
ZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29u
dGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250
YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVND
SUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRh
aW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRh
dGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyht
X2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAg
ICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAg
ICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYg
KCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJp
bmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRC
dWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1
ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njcmlw
dEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjYWRjNGEwNTk0YzViZjYz
NzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0
YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0g
ZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9k
ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RG
Rm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRv
Y3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
bV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7
CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAg
ICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJj
ZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwg
bV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0
YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNz
ID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsK
ICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5k
ZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5
MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBz
dHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFy
aWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwog
dHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAt
OTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2Zv
bnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBB
bHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUw
YmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5mYTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2Ix
NGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcg
KzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVz
LCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAx
ZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIz
ODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcs
OSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwog
Y2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxl
dGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFu
ZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShN
QUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAg
IGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3
ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1l
bnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxl
bWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBA
IC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0
ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlh
Ni4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywx
MiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNm
NWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2
MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBA
IC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1
dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0
cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2
ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rp
bmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRp
dG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0
dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRv
IGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xp
ZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91
dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAg
ICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFu
Z2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJl
c2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2
ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6Ondy
aXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkK
ICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVu
dCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJj
aGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxl
Y3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBp
ZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0
aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQs
IGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsy
MDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
REZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxl
bmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBs
ZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
bGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2Yz
Li4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMs
NyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0g
ZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5
cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xk
ZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVy
IHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwg
bWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5k
ID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFw
cGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAog
ICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAq
ZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAg
ICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAg
ICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+
dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyArMjMyMyw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFn
ZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3
OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBB
dHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVs
ZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1
dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVz
b3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwg
cmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9
KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkp
CkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAg
ICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJj
ZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsK
KyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6
IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1
MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVu
dHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNo
bWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAg
ICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJj
ZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCks
IGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBt
c29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFt
ZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZl
IHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAor
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3Vi
ZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlS
ZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNjE3LDcg
KzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMo
KSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRy
XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBi
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0
LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
ZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAy
ZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFi
MGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAg
aWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9i
YWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0
aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRo
ZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hp
Y2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2
M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5
OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBl
bmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwg
cmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmco
cmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsK
IH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBh
dGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwog
ICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVt
cGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiBidWZm
ZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJv
b2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsK
LSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRl
bXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAg
ICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBj
cmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVm
KCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQg
YmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50
byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50
LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5n
LgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4u
ZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMDMsMTAg
KzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBt
X2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29u
dGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICBtX2RhdGFCdWZmZXIgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0
Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2NTU5ZGE0NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRB
c1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAg
KnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYxMjEwNDA1ZmVmYmYz
NzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2VlNDBhODdlMDZmMzM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwg
d2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJl
c3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQy
Y2FlNmE4Y2QyMWY3YS4uOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAg
IEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3Vy
Y2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNp
emUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVy
LT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEuLmQwOTYx
YWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzks
NyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0
KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBw
cmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVx
dWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZy
YW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVz
dCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMs
IEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1MGY3MWMyYzM3M2Qy
YWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVhZTY1NTA1MjkxY2Q2
ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0x
NjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2
ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQo
bV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWlu
UmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2Uu
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJl
c291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwot
ICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5k
YXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEo
KSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlm
CiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hp
dmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9w
KCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRB
cmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0
KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZp
bmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZv
clJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2Fk
KHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgY29tbWl0
TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRh
LT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4
OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2
NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1
LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hl
ZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50
RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFk
ZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3ICsyMjks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3Vy
Y2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJj
ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2
ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURh
dGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9h
ZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC02
MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVOQUJMRShX
RUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hp
dmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKICNlbmRp
ZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBh
N2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgp
OwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBp
cyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxv
YWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNkYzU4YTlh
MmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMo
KSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5
ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3OWFhN2IwMTQ2ZTMw
Nzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTAxLDcg
KzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0
YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRp
YWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgp
KTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJl
ckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJs
KCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBAQCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAg
ICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCBy
ZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3Vz
bHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUs
IG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0
aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRj
aERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0
Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRiMS4uYTUy
ZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwog
Y2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1
aW50OF90OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZl
KFJlZjxBcmNoaXZlPiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBj
b25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xp
Y3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9
IG51bGxBdG9tKCksIGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25h
bDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBj
aGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0
NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAy
OTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVy
LCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24n
dCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdp
YW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBT
ZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0
aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5
NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+
cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJl
c291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApp
bmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li45Njk2ZGUxNzZk
MTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAg
LTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtMTEx
Myw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0cFN0
YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVuc2ln
bmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbklu
dDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVT
dGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAg
ICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3
KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFj
MjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBl
MjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXBy
ZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBidXQgbXVz
dCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBkYXRhID0g
cmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVhdGVDRkRh
dGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgp
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUg
bnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIK
ICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4g
cmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvIHJl
c291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24ocmVz
b3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVz
b3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9u
c2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICBy
ZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3Qg
Y3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNp
b24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlv
bmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7CiAgICAg
ICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZlcnNpb24g
aXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERh
dGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9
CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5n
IGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNo
aXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlmICghY2ZE
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVycm9yUmVm
IGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJvcGVydHlM
aXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFi
bGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAt
Mjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAgICAgIENG
UmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwog
ICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlE
KCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUg
cHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcg
aW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJvcnRpbmcg
aW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
CisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19jYXN0PENG
RGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2Vi
QXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGljdCkgewog
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiByZXNvdXJj
ZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMzMyw3ICsz
MzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGlu
dmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJyZXNvdXJj
ZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAgICAgYWRk
U3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KQEAg
LTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnks
IGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhdXRvIHN1
YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2
ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZyYW1lQXJj
aGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52YWxpZCBz
dWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmlu
ZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7
Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3aXRob3V0
IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBpZiAocmVz
cG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1l
KQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4gYXJj
aGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBh
biBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVu
dCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAg
U3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53
aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTgl
JVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4
IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFlNTc2YTJi
OTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQyLDEw
ICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYz
NzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3Njdl
NTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tI
aW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3Qg
Y2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4g
dXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0
YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5LDE1IEBA
IHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5j
b2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgp
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0
byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1
cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8g
YmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEz
NDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2
MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5n
ZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUobV9k
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3RyaW5nIENh
Y2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1
cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkK
IHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgp
ICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBAIC0x
MDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5nZXQo
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
biwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAg
IFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7
CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9u
dENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQq
IGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1
N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1NzVhYWIz
MGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
OwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRh
KEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2aXJ0
dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9t
Q3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGlj
LCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3RvbUZv
bnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcg
Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRh
Njk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFkYzg5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NzAs
NyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogCiB2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCiB7
Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgp
OwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJh
Y2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwg
IWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICgh
ZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNv
dXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFU
Rk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
ICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxl
ZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRv
IFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEw
NTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VE
YXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVk
NzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTkyNGJkMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2Rh
dGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAKICAgICBh
dXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChkYXRhLnNp
emUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAg
ICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0YzdkNzU0
ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShT
aGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VF
bmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYg
KCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
CiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAgICBtX2Rh
dGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVu
dHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5jY2U1ODAx
YWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VC
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywg
dW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVw
bGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgog
CiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNo
Q291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5
IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERl
Y29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kZTU3ZjQw
NDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBk
b24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQg
YmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBT
VkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkp
OwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZi
MzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAg
ICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3
ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxl
bWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9u
dCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9u
dCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2Zl
YjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAs
NyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVF
eHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAg
U1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVu
dCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5n
cz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uZWVk
YjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4
NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00
Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYwNDNmNDlk
Y2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMsMTQgQEAg
U3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQot
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNmZWJk
NzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdjYjVi
MWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVm
ZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lkIHJl
c291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNl
QmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1
cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1
MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRo
ZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJlc291
cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0
aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZm
ZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJl
c3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6
OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9IF9D
RkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFj
a2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2Up
CkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3Bv
bnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBE
aXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBm
aWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAg
ICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJl
cXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291cmNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRk
NjRmMjVhYjEzNWFhNjAzMzNjZi4uZmFkZWYwNTJlZjIzMTIyZDI2MzEyMTlmMTcyZjljYTkwOTU0
NDQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1
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
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
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDQ3NTQy
ZGFjYWViODZhNWMzYWU4OGZlYjRkZmFmNDQ5ZmMzZWZjMzUuLmFmNWY5NGRhNzFjMTNlN2RmZGMz
NTliMjA0ZjM1M2U0MWJhZjhiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
c3QKQEAgLTE3NSw2ICsxNTAsMjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3NpemVf
dCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisK
K2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUo
KTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY29udGlndW91czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpemUoKSksIDEpOwpAQCAtMTk2LDEwICsxODYsMTAgQEAgUmVmUHRyPEFycmF5QnVmZmVy
PiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkg
KyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
e21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRz
LnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMDcsMjMgKzE5NywyOCBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQog
ewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVj
dG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7
CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7Cit9CisKIHZv
aWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKQEAgLTIzNywxNyAr
MjMyLDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAg
ICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJU
KGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAg
YXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zMjIsOCArMzEyLDcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25z
dAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiAr
K2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAj
aWYgQVNTRVJUX0VOQUJMRUQKQEAgLTMzOSw3ICszMjgsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
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
YS5kYXRhKCk7IH0sCkBAIC0zNTgsNyArMzk3LDcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwog
fQpAQCAtMzY5LDcgKzQwOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBT
aGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4ge3sg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQpA
QCAtNDIzLDcgKzQ2Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigK
ICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1
cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NDIsNyArNDgxLDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
K1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21l
bnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAs
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1f
c2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2Vn
bWVudCkKQEAgLTQ2NiwxNiArNTA1LDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFyKiBTaGFyZWRC
dWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0
YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIg
YmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTAxLDcgKzU0NSw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAg
YnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCAzOTUzYjExMmJiMTEwNzUwYTdjYjE3NDNhOGRjZDc3MjQ3YWRhMWFiLi45
Yzg4MjQwMzAxODAzOGI1MWE4Y2YyYzRmOGQwNGU5YjlhNDJjOThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ1ICs2MiwxNDEgQEAgY2xhc3MgRGVjb2Rl
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
KSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLQotICAgIC8vIFNp
bWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUg
ZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hh
cmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0g
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
b3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlk
ZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAg
ICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBE
YXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHBy
b3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikp
IHsgfQorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworfTsK
IAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVm
ZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJh
eT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQot
ICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVf
RVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIg
dG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBp
bnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4K
KyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIENyZWF0
ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRz
IHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1
ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElP
TikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNp
ZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNl
bmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1
MyArMjA1LDk4IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3Rv
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
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJp
dmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5k
IHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVj
dG9yIG1fc2VnbWVudHM7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VE
YXRhKCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25z
aXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNv
bnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXpl
b2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJl
ZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVu
ZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxs
ZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAg
ICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNP
bmVSZWYoKSkKQEAgLTI2NSwyMSArMzA2LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6
ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToK
LSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAg
IGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhh
ZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFi
OWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAt
MzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5
aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFw
c2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5n
SW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAg
ICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8u
YXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0
d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51
bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2Ex
YTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lk
IEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3Qo
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29k
aW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RD
cmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtD
RlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5
YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4
MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAog
cHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVC
b29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2Uz
MWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4
YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBk
YXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2ll
bnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMg
dmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWlu
UHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29u
c3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0
byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAz
NWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBA
QCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdz
KCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252
ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZm
ZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9j
XSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0
YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
ICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRt
YXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1
cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVX
aXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5
cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBi
NTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5Mzky
ODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3
dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewot
ICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0
YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNl
Z21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsK
IH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50
IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewog
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAt
OTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQog
ICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNE
YXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRh
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFS
ZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFS
ZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
LSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9j
YXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3
ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBE
YXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhb
W1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlz
IHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5
YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBi
ODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBj
b250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJl
ZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJ
ZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29u
dGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBk
YXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFT
aXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNp
Z25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5
SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0
YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6
Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAg
ICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5n
IG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFj
aCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBv
Y3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJy
YXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBp
bml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRh
LnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRz
QXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51
dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3
Y2M0MWEwYzU4Li4wNDFkZGYwMWFmMTJhMzhmNzY0ODQyOThiMWRlMDlhNjdjNDU4ZDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hF
bmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5i
dWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ291c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5
ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzlj
NjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMx
MTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi4yNDZiYjBkNTMxYTk3ZTIwNWVkNTZi
OWEzZmZkNTk4ZjUwMDgyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEtleWVkRW5j
b2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNo
RW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkg
PT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBn
X3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNl
MjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jMTVkOWZmMzUwYzIyNmJjMzUxNDIxOTQyZTUz
ODViN2EzMWZmOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2Rl
ckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWdvdXNTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVz
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2
b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0
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
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRm
NjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJkYTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCpt
X2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3
ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0
ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6
TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7
CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVj
ZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLmU4NDY0MWZmMjYyYjk5MmU3ZTBkZGNi
YjIzNzQzMTcyYTQ4MDA4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0
aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBw
b3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7
CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAg
ICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQg
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAg
IGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNl
VHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBz
ZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
CiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5z
aWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwog
ICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRh
UHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1
b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlv
biBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hh
cmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhl
IGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAg
ICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJh
Y2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3Mg
PSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVy
UmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCks
ICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmY29udGln
dW91c0RhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdl
U291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3Zp
ZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmlu
ZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2
OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0zMTks
NyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZE
b2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZi
OGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBG
b250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
b3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2Zv
bnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3
ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXpl
X3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5k
ZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRm
Mzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8
Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29u
c3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAo
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9u
dCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNj
YWIyZDE5MTEwZjI0MWVlYy4uNGQ3MjYzM2Q3OTlhODQxNWNhZTM5NjQ4ZDc4N2ZlODRmZGI2MTkz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICB9CiAK
ICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKLSAgICBpZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxp
YnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBi
dWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKKyAgICBpZiAoRlRfTmV3X01lbW9yeV9G
YWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2
NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDks
NyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgp
IGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5j
b2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9j
a2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWly
b0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3
ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRm
ZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0
MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBj
b25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNH
U3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1MGJkMjU3Li45
NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIwNDdhOTFiYzczZDA4MTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1
aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1Jl
ZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4y
OWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRh
U3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0
YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBh
dXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhp
cywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0
byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMs
IGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7
CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRl
Y29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVy
LT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGUxYTIxYTI5NzQxOGI3YTUx
NTgwMjgzZDU1OTA3MDUwY2U1NTJiOTEuLmQ1NmIxOTg1MTQyNTc2YTc1ZTllZDExMWQwZjY3OTJm
OWM2YTBiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0zNjQ0LDcgKzM2NDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAg
ICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCku
dXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
LSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1Ro
aXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXls
b2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMu
Ljc4Y2FlNWFiYjU4MmYwZjA4OGIzZTg5YWZjZWE1M2QxMDNiYjEyMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgc3Rh
dGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2lu
dGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVs
ZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBt
YXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENl
bmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxv
YWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1
cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgK
aW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uM2M0ZDJiMDc4
OTRmNGZjNTZhZjE1MzRhMzliODI2YTNhYjMzYThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09S
WV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0
ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0g
ICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4K
ICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRh
KQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxf
TE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5
LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0
YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRl
ZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0
byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgcGF5bG9hZC5hcHBlbmQocGFyc2VQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBt
X3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVl
ZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBh
eWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIHBheWxvYWQuYXBwZW5k
KHBhcnNlUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
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
cAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4
OGUwNmQ5M2NjNjM5ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRp
bmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERh
dGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQog
Ly8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3Jp
Z2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBz
Zm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgp
KTsKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJld3JpdHRlbkZvbnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9u
dE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEu
bWFrZUNvbnRpZ3VvdXMoKSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjY4
Y2FmNGQ5YjEyNDg5ZDlkOGU1ZDNiMGFhZGQwMDM1Y2NjMjE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90
LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworYm9vbCByZW5hbWVGb250KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhf
dD4mKTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChj
b25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIy
NjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIx
ZDI4N2I4OTg4MzJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAg
LTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGlj
IGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
IFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFU
YWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVu
VHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlm
ICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmlj
cyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2
aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQg
dmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29u
c3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9w
ZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1
cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1l
dHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpH
U1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6
OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1
YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGlj
YWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uZmRhNmNjNGRk
ODc2NTNhMTc4NzkzYTcwOWY3M2QwZTMxOWYxZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtMTEyLDEwICsxMTIsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAg
ICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnRO
YW1lKTsKICAgICBpZiAoIWZvbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgYnVmZmVy
LCBpdGVtSW5Db2xsZWN0aW9uLCBmb250UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9OworICAg
IGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIEZv
bnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGEgPSB7IGNvbnRpZ3VvdXNC
dWZmZXIuZ2V0KCksIGl0ZW1JbkNvbGxlY3Rpb24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+KGZvbnROYW1lLCBXVEZNb3ZlKGNyZWF0aW9uRGF0YSkpOwogI2lmIFVTRShDT1JFX1RFWFQp
Ci0gICAgcmVzdWx0LT5mb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0
ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoYnVmZmVyLmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7Cisg
ICAgcmVzdWx0LT5mb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZv
bnREZXNjcmlwdG9yRnJvbURhdGEoY29udGlndW91c0J1ZmZlci0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpKTsKICNlbmRpZgogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
aGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRk
NjZjM2QyY2NhNDUuLjdmNGQwOTYyMDA1NjkxNjZkNzUxOTYzODkyYzg4OWRkNTI0Nzc5YzcgMTAw
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
aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAKICAg
ICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CisgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VU
VHlwZVJURl07CiAKICAgICBpZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgTlNEYXRhICpodG1sQXNEYXRhID0gWyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0
YUluSFRNTEZvcm1hdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CkBA
IC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAg
ICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3Jp
Z2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Cisg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rl
ckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0
ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAg
ICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5
cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0
YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBl
c1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRp
T3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBp
ZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVU
eXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1h
Z2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRp
T3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZl
cnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZElt
YWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBs
YXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVf
QU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBb
bV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0
b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxp
emVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmln
aW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkp
CiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3
ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbklu
Zm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21E
YXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNl
cmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkp
IHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9h
cmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5k
IGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRl
cnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlw
ZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBi
bG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJh
Z292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNv
Y29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAg
ICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJv
YXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3
NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRl
bSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJ
bmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFi
YWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29s
b3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3
cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdp
dGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVu
YW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJs
LCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVy
LmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFk
U3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVy
cmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0
ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYg
KGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIs
NyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRl
eHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAg
aWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4
dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0
LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2Jj
ZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi4zYjI4YmJkMTAyNTBhYWNjMzNiNWRhYzBmMWRi
YmNkOGI1ZTUxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZFdyaXRlci5tbQpAQCAtMTE2LDIzICsxMTYsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgICAgICAgICAgYXV0byB3ZWJBcmNoaXZlVHlwZSA9IGJyaWRnZV9jYXN0KGFkb3B0
Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJv
YXJkVHlwZSwgQ0ZTVFIoIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSIpLCBudWxs
cHRyKSkpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0g
ICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBl
LmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgICAg
IGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CisgICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVS
VEZEXTsKICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKKyAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1h
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlUlRGXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0
LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250
ZW50LT5kYXRhSW5IVE1MRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOwogICAg
ICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKICAgICAg
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
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAw
OGY3OTA1Li5jN2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0
MTEsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJl
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
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5
ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lk
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YToo
UmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJj
ZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0g
ZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFE
ZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCku
c2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5Zjdi
M2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhh
bmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBw
ZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAg
ICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9
IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0
aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWlu
aW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOwor
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJv
dW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQg
PT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkg
c3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAg
ICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5
IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2Yg
dGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAg
ICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgp
KTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApp
bmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAy
OWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZp
bGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSht
X2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0
ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNl
Mjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAt
MTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxl
ZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUs
IFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpz
aW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAK
IHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
bi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uODlj
ZmQ3MmRhODhiNTMyYTE0YmQwZjc5M2VkNzk4MTc0OGI3MTRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTMsNyArNTMsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5
dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZp
bGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDAp
ICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50
cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRh
KCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMw
MDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDEx
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tD
RE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
IHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3Bv
bnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygp
OworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
LnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhi
dWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFy
ZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRh
KCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJp
bmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRl
LT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMz
MSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9u
c2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNl
VmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2
NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
QEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYg
KCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xv
YWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwog
ICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9
IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRhID0gY29udGln
dW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAg
ICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAx
YTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlm
MmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVu
dCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9u
c2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5k
RmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90
JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMx
Y2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBt
YXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3Jp
cHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNo
b3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVN
YXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAog
dm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
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
MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQy
MDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25v
dXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFw
cGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
CiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxO
ZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4
OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2
MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAg
bV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7
CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEw
ZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFl
ZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgx
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3
aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4K
LSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkg
fTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3
ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNw
b25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0
YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCks
IHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFl
ZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0g
ICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAg
ICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
IH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJv
ZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcx
Li4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5k
ZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3
YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAg
ICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Cisg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFy
ZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAg
ICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
cjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAK
ICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFm
NjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYy
YjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAt
NDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewog
ICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIy
YjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJl
OTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQs
NyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyAr
MTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBi
eXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0Owor
ICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1
NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4
OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2
ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQ
STo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgp
OworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNl
ZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZS
ZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJl
MGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3
M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRo
ZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0
IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0g
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEo
KSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250
RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVj
b2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFm
NmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVy
VHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNv
ZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29u
dGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAK
aW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzll
NzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBo
YW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
YWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQ
cm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyBy
ZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkg
eyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVh
YmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAg
ICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4
NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBj
b25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6
OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNl
OwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJs
ZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
c2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVm
ZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMuLjE1NWRlNzgyMWRm
YmZmMzQyOTIyNmEzZTgzY2Y2OTNkNmRhYjQyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4g
aXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3
ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQog
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
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSwx
MyArMzAzMSwyMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwor
fQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiBz
dGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNv
dXJjZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAgLTMwOTUsNyArMzEw
NSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVy
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+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMx
YTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsx
MDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2
YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcu
LjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0
YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTll
ZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4
NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0
YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFt
X2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9
IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJp
YWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24s
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0
NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1
OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGln
aGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQg
PSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0
TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5o
aWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxp
Z2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5O
ZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEw
MmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNF
cXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMg
b2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFt
ZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAg
IGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBm
b3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6
bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJy
YXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlm
IChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1f
cHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6
bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9N
UGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAg
IGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0
ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1
cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNv
bXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2JiNmQ1ZGQx
MGNiNjM1M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3Li44ODgyN2ViMjkxMmE1MzRlOTI1YmI1ZmE4
Zjk2MjNhZWMzYTEzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NB
Y2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNl
bGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0
N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAg
LTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygp
KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0
YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+
c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBs
ZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAg
ICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2Jj
N2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9y
bWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2Nv
bnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lk
IFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJ
bWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVM
TCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhOGU5MGU0MjlhNmVjZTEzNjg3YjlmOTFiYzcz
ODJjYTdjYjBmZjNkLi42NWU1ZDgyYTM1N2JjYmFhZjk1MDkwMzg1ZDJhZWRhMmVkZjM0MjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFj
dGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAg
ICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9y
UGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxs
Q3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAg
ICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihi
dWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAg
ICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk0LDcgKzY1OTQsNyBAQCBzdGF0
aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQg
KnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
IT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU2NSw3
ICs3NTY1LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NU
UklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBm
b3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURh
dGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMg
PSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShV
SUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFy
ZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0
IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgw
YzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFm
NTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li5hN2Zi
NGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBT
dHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5
ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
Tm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVj
dCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFz
dGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIw
MDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEw
YzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQs
NyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5F
ZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+
X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIs
NyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNz
UGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0
YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsK
ICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAg
ICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAg
cGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFC
eVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsK
ICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkx
MWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQu
d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJh
bmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsK
ICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBX
S0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5z
dHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRz
T2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMo
KSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0
NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcg
KzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlv
bihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFs
OwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29s
IGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0
NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1
ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNl
ZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZv
aWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYg
cGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05h
bWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAg
LTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6
OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZm
ZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRh
OjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZm
ZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxM
b2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5n
ZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkp
LCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRj
NThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNv
cmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1
cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRh
KCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0
OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhh
bmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZl
ZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1
ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0
d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGls
IHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2lu
dGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVy
KCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1f
aW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29y
ZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1
YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3Bh
Z2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCpt
X3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3Rl
Ym9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUw
NmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1
MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJV
bmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRv
U3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5
MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRl
cihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQx
YTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uMjk0YzI0MDcyZGJmZTk3ZDBj
NjU3YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9h
cmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJz
dCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZl
cjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJy
aWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUs
IG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFj
ayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRl
bnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtNDA2LDcgKzQw
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFz
dGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdk
MDFmNDFhNjg1MzFhYjczMjE0ZmIwLi5lYTg5NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVh
YWRiYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNi
MGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lk
IFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFn
ZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUg
PSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hp
dmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewot
ICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlk
Z2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZl
U2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1
YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3
ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVj
b2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
KyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQog
CiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQx
MjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4
NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDcz
YTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcy
OTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFS
QU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5B
TFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxz
ZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGVi
Mzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVj
YjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0
YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRh
ID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+
ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNT
dHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5
YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThi
OTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
ZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0
RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4Nzgz
MTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAg
LTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBs
ZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90
IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45
MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMw
Nzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIz
NjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5i
dWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAy
ODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1
NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRh
ICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0
dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXBy
ZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhh
MjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFz
V2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2Vs
ZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVk
QnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1l
bnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNo
aXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRB
cmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRv
cmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1
YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcg
KzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0
ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdl
ID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0
KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxv
Y10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAog
ICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4
ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVj
MGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2Rl
cjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAg
UmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3Ry
aW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5p
bDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChy
ZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAg
ICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5n
ID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJj
ZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCku
bnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBm
b3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0
YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2Rl
T2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5j
b2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNv
ZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAg
IGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VS
TCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAg
ICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hh
cmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRh
dGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICBy
ZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVE
YXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiZDVkNTM4MjA1NWM5MjcxOTU3
OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2MmJkNDk0ZTlkMWQxZDM1NGM1ZDc5ZjVkYjgyOTBm
MWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0x
MS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIg
bmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2
NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5ZWY3YjZjMzQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00
MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1
ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhD
b250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5z
aXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXpl
KCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0
YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVYUEVD
VF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiArODAsMTMgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
LSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
ICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScs
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRl
QXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwog
ICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEo
MCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6
ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNp
emUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTcyLDMwICsxNzMsMzMgQEAg
c3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29t
ZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7
CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwog
ICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBn
aCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0
byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsK
LSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBhYmNk
ZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEp
OwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAg
ICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZm
ZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRh
KCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNp
emUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImts
Iik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2Rl
ZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCks
ICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2gi
KTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZm
ZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hl
Y2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMDcsMTUgKzIxMSwx
NSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7CiAg
ICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2Qn
fX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdk
JyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAog
ICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30p
KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAn
YycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3sn
YScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9
LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAg
RVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSku
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5
MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYxMGM5
YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYyLDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2Jy
aWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
LSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09m
RmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444999</attachid>
            <date>2021-11-22 21:18:25 -0800</date>
            <delta_ts>2021-11-22 21:43:09 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123161822.patch</filename>
            <type>text/plain</type>
            <size>382989</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYzA2OWM0NWY1MjM0MGQ5YTE1NDJmZTY5ZDYxODlh
YjkwNGZhMmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOCBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6
CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6
bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBl
ckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRl
bGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBs
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
CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9z
aXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlv
bjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVi
b2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
cGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVy
RnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5nIGFyZ3Vt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNhNmFmZWEu
LjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRl
Y29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRh
KToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
dG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5Q
ZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVs
ZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBj
b3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAg
ICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hh
cmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
IGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhl
ciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4
OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhh
bmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAg
IHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGlu
c3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcg
Zm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVj
a2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJv
bSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjovLzg1NjM3
NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlciB1c2lu
ZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFkLgorICAg
ICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0b3RhbCBt
ZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sgZm9yIG51
bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAgICAgICAg
aW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291bnQuCisg
ICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJsZSBhbmQg
dGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQtc2FmZSBy
ZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhyZWFkCisg
ICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1vdmluZwor
ICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50OjpQcm92
aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNo
ZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5pbmcgY29k
ZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlz
cGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlhMmUxNWNj
Yy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxl
bWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtX
ZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2Rl
V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFvcyBNb3Vj
aHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBUZXh0RGVj
b3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
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
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVh
ZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEzY2U3YTYy
MGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9y
PFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxl
ci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRh
KSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVj
b3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNo
UmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNo
ZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
LCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9u
c2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9u
c2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBA
QCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNl
Qm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0
aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBA
IC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRh
NjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3
NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0
aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVz
dD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNl
cHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBj
bGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNp
bmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxW
ZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4
ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJm
ZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJv
ZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAg
ICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJs
ZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9k
eSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAg
ICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkg
eworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9
LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIw
YTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZh
MTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2co
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVl
cnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNo
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFz
VmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29u
c3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1
c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3Jt
RGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0
ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNw
b25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1
Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAg
aWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIu
dmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJy
YXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgi
a2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2Jq
ZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDcz
Zjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5
NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwg
Y29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAg
aWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRh
dGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1
ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlW
YWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRp
YUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBz
dGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZl
cj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRlYzQ1Zjhm
YWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIz
NSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXIm
IG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHko
KS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRh
KFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElm
IHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVy
IGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0
dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRv
KiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRh
OjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQs
NyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAg
ICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZl
dGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3Jt
RGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVU
RjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlC
dWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUx
MmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0OwogCi0gICAg
dXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9ybURhdGEo
UmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkw
OWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlw
ZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMw
Niw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0
byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2th
Z2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcg
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZm
ZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5
Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3
YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpj
b25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApA
QCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAg
ICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92
ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShX
VEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5h
MTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5h
bDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNl
RGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsK
ICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdp
dGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQx
Li42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2
YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdo
dEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAog
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2Rl
ciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+
ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRh
OwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5h
MWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBj
bGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAg
ICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsy
ODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29u
c3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZl
cnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3Qq
IGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2
M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2Yjhh
YjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRl
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2
MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUlu
Zm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCpt
X3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgp
KTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
Y3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4g
YSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2
NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRI
YXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQg
PSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCBy
ZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhl
IGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRv
IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3Rl
bmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNl
IGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5
NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4g
b2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyAr
MjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5n
ZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktl
eTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhp
bXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9u
ZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVk
REI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsy
NTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAg
ICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6
bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURC
S2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ug
Zm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSBy
YW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVw
cGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24i
X3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmEx
MDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURC
Q3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxv
YihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQg
KGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5NjdhYTMu
LjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0
cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlz
UmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2Uu
aXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2Uu
YnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBp
ZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYz
NmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBt
ZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2Us
IFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJl
Y2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNs
aWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAg
IGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJlMmZjYTBk
MzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFmNjQzYTUy
N2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVl
OwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9
IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFs
aWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjllOTBjZDU2
YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVkZSAiQ2hy
b21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
PHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19DTEFTUyhB
c3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUgbmVlZCBm
b3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFTVklubGlu
ZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJlY3Rvcnkg
PSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOworICAgIGlm
IChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGlyZWN0b3J5
KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93
aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9y
dCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVG
b3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKKyAgICBh
dXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhU
b0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBpZiAo
ZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRoID0gZmls
ZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sKKyAgICBp
ZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5n
KCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAg
IGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNpemUgPSBy
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1f
aW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkg
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRD
aGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwg
KChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgp
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBk
b2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubW9kZWxF
bGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUp
OworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250
ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgaWYg
KCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0u
VVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2Vp
dmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5nKVtt
X2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6
Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5s
aW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCBy
ZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVs
ZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2
aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpICYm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
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
CmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVm
ZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAg
QEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5j
b2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
bV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGVi
YjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJp
CiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJl
c291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJl
c291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNl
NjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpy
ZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVj
ZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpt
YWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVu
Y29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsK
LSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNl
NjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwog
fQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNk
MjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQo
cmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRl
eCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3
M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0
UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxv
YWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5s
b2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9w
dGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2Zi
MjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSAr
MTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAg
IGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2
ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNl
LmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5t
YWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5t
aW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21t
aXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNp
emUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAt
MTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3Vy
Y2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQog
Ci1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURh
dGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpA
QCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNl
KCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJj
ZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVj
MGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJk
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3
IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNv
dXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRz
OwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNo
aXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFy
Y2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJm
cmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3Vy
Y2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYw
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlh
NGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1
MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAg
IC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1
cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVl
OTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMy
ZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
bV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRn
b2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFs
UG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2Us
IGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1Jl
cXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1
ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24o
b3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGlu
YXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYy
NjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsK
QEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBF
TkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJj
aGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7
CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0
ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRv
bSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9j
YXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZm
NjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZlNGY1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcxLDcg
KzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0
b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVu
IGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2Nh
bCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxi
YWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0
ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNl
RGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURh
dGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
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
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIz
M2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2
NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyAr
ODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAg
ICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTEx
Myw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2Rl
ID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7
Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50
LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAg
ICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1
ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0Mzli
NmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVw
cmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAg
ICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
RG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNl
CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJl
c3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5y
ZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVz
cG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCBy
ZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHBy
b3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNv
dXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBp
bnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAo
cmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZl
cnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBv
ZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJl
c3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291
cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0y
NTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJh
dyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNy
ZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRh
LmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9
IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0
ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAm
ZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiAr
Mjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2Uo
ZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
Q0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5
IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQg
V2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQg
V2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
Q0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVN
YWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAg
TE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJj
aGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJy
ZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVh
dGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291
cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyAr
MzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGlu
ZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFy
Y2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJh
Y3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RG
TW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdl
YkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUg
YXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7
CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5y
ZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAor
CiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBo
ZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJM
LmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAg
IGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0g
ICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1l
IHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNo
IHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBp
ZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIw
XCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9
XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCku
c3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWVi
NjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5
NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNj
NmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhj
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAg
ICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRo
ZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0
ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlm
IChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAg
ICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRl
ZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUx
ZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3
ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBt
X2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hl
Y2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250
OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNM
b2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEw
OCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIg
YnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAt
MTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+
IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQg
PSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRh
ZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFm
MTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBz
dGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29s
IGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQ
dHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0
ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZm
NmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAt
NTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
KyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQog
ICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQu
LjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4
Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRh
dGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2
aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBw
cmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUz
MzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVh
OWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRh
KQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3
OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxv
YWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNj
ZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXgg
N2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1
MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3Mg
dG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAg
ICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQo
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2
MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRp
c2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdF
cnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwg
IWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAg
ICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2
MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxT
VkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRG
YWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0Rv
Y3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0
dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmlu
ZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQy
MjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNo
ZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRT
aXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBt
ZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYx
Li5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1
ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2
M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBD
YWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVk
U2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIx
MzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFh
OGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxv
YWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBl
dmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAg
IC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5k
ZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3
ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBA
IC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAg
ICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBz
dHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThl
MC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJl
YWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAg
Y2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5
QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0
KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVO
YW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5m
aWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAg
IAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRp
bmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIo
KTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1f
Y29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdh
MWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYw
LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBr
ZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdk
Y2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5
MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCAr
ODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owog
ICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3Jt
YXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1
cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwog
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hT
ZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0
b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5n
Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBl
V2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4
YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRi
ODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBh
c3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEK
IHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHBy
IHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBA
IC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAg
ZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwg
b3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBA
IC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNl
RGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2
NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApA
QCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
b3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZi
NzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0
MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3Njcz
NjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1
MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNh
NTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFz
dGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVi
b2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VU
eXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRo
bmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
Y291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVj
MzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBA
IHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRhY2FlYjg2
YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5YjIwNGYz
NTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXpl
KHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiAr
NjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9
CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBw
aW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6
WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwg
bWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZl
Y3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21i
aW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29t
YmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAg
ICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBo
YXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBh
cHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikg
YWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEp
Ci0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVy
biBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmICht
X3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8g
Y29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwot
ICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
LX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNv
bWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwog
fQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0x
NzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVk
QnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNo
YXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisK
K2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5t
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5t
X3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUs
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1f
c2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0g
ICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQo
IW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRh
KSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIzMiwxMiBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25l
LT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAg
ICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0K
IHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2Vn
bWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAg
ICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBl
bmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VS
VF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9
IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2Vn
bWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRp
Z3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21l
bnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2Vn
bWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXIt
Pm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIo
V1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
ZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgp
OyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01h
cHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2
OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVm
ZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3
ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUo
KSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAg
IFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEu
c2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6
ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBA
IC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21l
bnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7
IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0K
ICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91
Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5z
aHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uOWM4ODI0MDMw
MTgwMzhiNTFhOGNmMmM0ZjhkMDRlOWI5YTQyYzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQxIEBAIGNsYXNzIERlY29kZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRh
IHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQg
Y2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21i
aW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdt
ZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxl
RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAg
IH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwot
ICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVm
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMo
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
I2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50
cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4K
LSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0
ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9u
IGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIENy
ZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRl
bnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVk
IGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6
ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAg
ICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNv
bnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFs
bG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0Zp
dCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAg
ICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBG
dW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29s
IGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdM
SUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0
cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21l
bnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2lt
bXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK307CiAKLSAgICAg
ICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0
ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIp
Ci0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBH
UmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CiAjZW5kaWYKKwogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVk
T3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0
OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDksNTMgKzIwNSw5
OCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFu
ZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRh
U2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBm
cmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVj
dG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRp
ZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
IAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAg
ICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5z
IHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAg
IHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3Nl
Z21lbnRzOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgp
IGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBT
aGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZp
YSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXpl
b2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFy
Z3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNl
Z21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVkIGZyb20g
dGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBj
bGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFw
cGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0
YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkp
CkBAIC0yNjUsMjEgKzMwNiwyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+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
Y3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4
YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAog
ICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwog
Ci0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJ
bml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNv
bnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGlu
aXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNz
aFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAg
ICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhl
IGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJz
OgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVu
dCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2Vx
dWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNo
U3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1
OC4uMDQxZGRmMDFhZjEyYTM4Zjc2NDg0Mjk4YjFkZTA5YTY3YzQ1OGQzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJh
eSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2Rpbmco
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCks
IG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWdvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNl
ZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNi
MzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2wo
Y29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVj
NzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5
OGY1MDA4MjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGli
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3Zh
cmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50
X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0
ZGY3MjllMmI0YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFm
ZjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5
NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwog
fQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VE
YXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0
b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0
YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjli
YWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0g
T3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JW
ZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZp
c2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3Jp
ZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdp
biwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEs
IEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTli
MTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0
ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5
KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsK
IAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBm
b250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRk
MWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0
YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1v
ZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdU
Rk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0
YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAg
ICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkx
NTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4g
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5n
LCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1v
ZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJl
ZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3
IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9k
YXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAx
KTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0K
QEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdU
Rk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVh
dGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3Zl
KCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNw
cAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2Iz
ZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3
IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAv
LyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMy
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQor
c3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQs
IG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNl
dCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50
MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9v
bCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9
IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9m
KHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9y
PHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMy
X3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09G
RihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWdu
YXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0Vt
cHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5z
aXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQs
NyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsK
ICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
aAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3
YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlz
IGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYg
ZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChm
b3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndp
c2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1i
b29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBp
cyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBw
b3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUg
aWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAog
Ly8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4u
ZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2
NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8g
dmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRm
MmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250
ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFy
c2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUo
KSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50
aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEp
CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1l
KCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5p
dERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmlu
ZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNK
U09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5n
Kilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpu
aWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4
cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAg
ICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07
CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFM
OjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZh
aXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJl
c3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmly
c3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBh
bmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBj
YWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlz
OwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRo
QXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpz
dG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFj
a1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3Rv
ciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBp
biBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Np
b25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGly
ZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwog
ICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRl
KCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVx
dWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtl
eUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5
IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlm
aWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJy
b3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwg
Y29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSld
IHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0
ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1
c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+
LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBA
IC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAg
YXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBr
ZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJl
cXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhr
ZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5
bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJl
cXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIx
Miw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRv
IHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAg
ICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3Qo
KSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VT
dHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBj
b250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21w
bGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0
YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShh
Z2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3
aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsK
ICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0
ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRy
PE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VT
dHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBj
b250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21w
bGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0
YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJl
dGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUw
ZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAg
LTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIo
YWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRl
ciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBs
b2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFu
ZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQz
LDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJl
Y2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERh
dGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2Jj
YTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNl
clN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAg
ICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6
QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpp
bmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2
M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAg
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0
KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIp
OwogfQogCkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcg
QEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
KFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFV
UkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZv
cmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6
OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAg
ICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3Vs
dC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3
ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3
MmE0ODAwODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRp
Y3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24s
IHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZv
KTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlm
IChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsy
NTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhp
bnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRD
RihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRp
SGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVu
dGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBP
biBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkg
YXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8v
IFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRh
dGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyBy
ZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRh
dGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURl
Y29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCks
IGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVy
IHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29u
dGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEu
Z2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJh
Y2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZl
cgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBv
aW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMg
YSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAg
IENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAw
LCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2Ug
fTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlk
ZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRh
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
MGYyNDFlZWMuLjRkNzI2MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAt
MTM4LDcgKzEzOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRf
RmFjZSBmcmVlVHlwZUZhY2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJy
YXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4
NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAog
ICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2Fw
cGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3Nj
YWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VM
b2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAg
ICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01B
VEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3
NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0
YWQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAg
VmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAg
ICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVy
UGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgK
aW5kZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcw
NzNlNTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXpl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
aW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5v
ciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1
bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0
QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
aW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFk
OGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBj
b25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEg
PSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAg
ICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpj
cmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7
CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1
NTkwNzA1MGNlNTUyYjkxLi5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMzY0NCw3ICszNjQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBH
U1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZl
bnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAg
IEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUo
KSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3Bs
YXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNw
cAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi43OGNhZTVh
YmI1ODJmMGYwODhiM2U4OWFmY2VhNTNkMTAzYmIxMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lk
IG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAog
c3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBt
YXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJy
b3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAg
ICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxv
YWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1
YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjNjNGQyYjA3ODk0ZjRmYzU2
YWYxNTM0YTM5YjgyNmEzYWIzM2E4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJO
KHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXRE
YXRhKCkKLSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9Cisg
ICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUg
YW4gZW51bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5p
dERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUw
LDEzICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJr
aXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xF
VkVMX0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0
ZW1JZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVk
SW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2Vk
UGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKSkKKyAgICAgICAgICAgIHBheWxvYWQuYXBwZW5kKHBhcnNlUGF5bG9hZC5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICB9CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1J
ZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZN
b3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5t
YWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBwYXlsb2FkLmFwcGVuZChwYXJzZVBh
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
MzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uOTc0MDhhODhlMDZkOTNj
YzYzOWY2NDcyZjczMzQ4NmJhNDUyYzM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQo
KQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQg
d3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5k
QWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1
aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rv
cjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0
YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0y
NjksNyArMjY5LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIFJlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnRE
YXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdy
aXR0ZW5Gb250RGF0YTsKLSAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCBy
ZXdyaXR0ZW5Gb250RGF0YSkpCisgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLm1ha2VDb250
aWd1b3VzKCksIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKICAgICBEV09SRCBudW1Gb250cyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApp
bmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi42OGNhZjRkOWIx
MjQ4OWQ5ZDhlNWQzYjBhYWRkMDAzNWNjYzIxNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBt
X2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiBS
ZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAw
NzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4
ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyAr
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
NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLmZkYTZjYzRkZDg3NjUzYTE3
ODc5M2E3MDlmNzNkMGUzMTlmMWYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
QEAgLTExMiwxMCArMTEyLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgYXV0byBm
b250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CiAg
ICAgaWYgKCFmb250UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEZvbnRQ
bGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGEgPSB7IGJ1ZmZlciwgaXRlbUlu
Q29sbGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBjb250aWd1b3VzQnVmZmVyLmdl
dCgpLCBpdGVtSW5Db2xsZWN0aW9uLCBmb250UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9Owog
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250
TmFtZSwgV1RGTW92ZShjcmVhdGlvbkRhdGEpKTsKICNpZiBVU0UoQ09SRV9URVhUKQotICAgIHJl
c3VsdC0+Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVz
Y3JpcHRvckZyb21EYXRhKGJ1ZmZlci5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIHJlc3Vs
dC0+Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3Jp
cHRvckZyb21EYXRhKGNvbnRpZ3VvdXNCdWZmZXItPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAj
ZW5kaWYKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2lu
LmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3
NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAg
ICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1
NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdm
ODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwx
OCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8
SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAt
MSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZv
bnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRG
b250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6
ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQ
Vk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xk
Rm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNj
YTQ1Li43ZjRkMDk2MjAwNTY5MTY2ZDc1MTk2Mzg5MmM4ODlkZDUyNDc3OWM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
QEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bh
c3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFz
dGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcg
KzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
V2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNp
emUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0
YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ld
XTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNs
aWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmli
dXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hp
dmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmlu
Zy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmli
dXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hp
dmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmlu
Zy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAg
ICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVj
dDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOwogCiAgICAgaWYgKGNv
bnRlbnQuZGF0YUluUlRGRm9ybWF0KQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZd
OwogCiAgICAgaWYgKCFjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIE5TRGF0YSAqaHRtbEFzRGF0YSA9IFsoTlNTdHJpbmcgKiljb250ZW50LmRhdGFJbkhUTUxG
b3JtYXQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwpAQCAtNTAxLDcg
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
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4
YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5OTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBz
dGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVs
ZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0
UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAg
ICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1J
bmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgs
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5k
ZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0
ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFp
blRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRv
IGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9h
cmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0
byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9
IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRm
ZDM3YzI4MDgxMzFmMjE0YjhkYS4uM2IyOGJiZDEwMjUwYWFjYzMzYjVkYWMwZjFkYmJjZDhiNWU1
MWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0KQEAgLTExNiwyMyArMTE2LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZVR5cGUgPSBicmlkZ2VfY2FzdChhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUs
IENGU1RSKCJBcHBsZSBXZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5cGUiKSwgbnVsbHB0cikpKTsK
ICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07
CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAod2Vi
Q29udGVudC0+ZGF0YUluUlRGREZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CiAg
ICAgICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CisgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlw
ZVJURl07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdC5pc051bGwo
KSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0
YUluSFRNTEZvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVIVE1MXTsKICAgICAgICAgaWYg
KCF3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBb
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+
KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhmNzkwNS4u
YzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDExLDEzIEBA
IHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1f
bGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hh
cmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0
YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1f
ZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1
aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBG
b3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2
MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3Jt
RGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVt
ZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1E
YXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0o
KSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3Ry
ZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJl
NzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3Vy
Y2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0
YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1
NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJD
b3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVz
b3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0
aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRh
KV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNp
emUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUg
PSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24u
ZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2
ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlz
IGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxl
IChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhh
bmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShi
b3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZv
dW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBh
bGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1
ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAo
b3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVm
ZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1
YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdm
MTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9h
ZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3
NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZj
ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsx
NDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3Zl
KGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwg
V1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNk
NjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4
Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50
KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYg
KGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5
TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAz
OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwm
IHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRh
IHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09M
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQot
ICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxl
LCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAo
ZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxl
KHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7
CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmlu
ZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjg5Y2ZkNzJkYTg4
YjUzMmExNGJkMGY3OTNlZDc5ODE3NDhiNzE0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVh
ZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVI
YW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRl
c1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmls
ZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRM
YXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEu
LjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgn
ICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VB
cnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAK
IHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBT
dHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgp
KTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJp
bmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5j
b250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRi
ZDQ1Li5hNGUwYWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwx
MSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7
Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAg
aWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRh
OworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29u
dGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAg
ICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2Jm
YjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYz
MmYzMmUyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBA
QCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVj
dGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25z
dW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChX
VEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1
NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBp
biBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9w
ZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNj
cmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VG
aWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6
WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJp
dmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dT
Y3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBm
NTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMg
eG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNv
dXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBn
bG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAg
ICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdh
ZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRj
ZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMg
dm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERl
c2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApp
bmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVj
ODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3
ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxl
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29y
ZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2Um
JiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hE
YXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIg
PSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBk
YXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFi
ZDg0MTg0YzYzMzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRh
dGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xv
YWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
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
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMx
N2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4
ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThm
NDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVk
QnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkg
eyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1
ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9i
dWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0
dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRh
dGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJD
b3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQy
MWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0
OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9y
eTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
eworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAt
PiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdi
ZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xh
c3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBA
IHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAg
ICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0
ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2
OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+
IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZS
ZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNm
RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1
OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2Vj
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250
Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBm
b3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3
ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRG
YWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRh
ID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4g
aXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40
NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNw
bGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRh
dGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDBj
MGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhmOWEx
Mzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVhYmxl
UmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
IHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAv
LyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9y
KCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQotewot
ICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJjZSwK
LSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAgICAg
ICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRlCi0g
ICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VEZWFs
bG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAgIHJl
dHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250
ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRl
cmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQotICAg
IGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRo
aXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXpl
KCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGJ5
dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgp
LCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNl
Kj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbc2VsZiA9
IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBbc2Vs
ZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVz
b3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEwNCw3
IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5
PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6On5T
aGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJl
c291cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5k
bGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hhcmVh
YmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0gICAg
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9S
RVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDdi
NDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1NTE0
YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNo
YXJlYWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsK
K2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNo
YXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6
RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7
CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFi
bGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFw
SW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5
OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAKKyAg
ICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2YWVj
YmQxOWJiNjRkN2IuLjE1NWRlNzgyMWRmYmZmMzQyOTIyNmEzZTgzY2Y2OTNkNmRhYjQyOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVm
ZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRh
LnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0
aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
YnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEp
CiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNT
RVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAw
OyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8
IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVz
cG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwg
WyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9u
KHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVj
b3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hh
cmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVs
ZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUo
bWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
cwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSwxMyAr
MzAzMSwyMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQor
CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiBzdGF0
aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAgLTMwOTUsNyArMzEwNSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRC
dWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJi
YjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0
ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMs
MTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5n
SW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpT
dHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0
cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJh
MDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNT
IE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
fQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0lt
YWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0Vu
Y2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQg
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25z
dCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdi
OGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5h
cHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxj
b25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4
MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4Njgx
N2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNo
bWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2Zp
bGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRo
aXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxp
emVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQg
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4u
NmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUs
NyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBo
aWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMo
W1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdo
bGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBh
dXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdp
dGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0
OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRl
IF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdH
cm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmln
aW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6
WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJiNzkxNWI3YjNiNTgy
MDIzZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LAogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlw
Y0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAg
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5k
bGUuZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFz
dGVib2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChjb25u
ZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291
bnQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNi
NzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUw
NTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgog
ICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNl
dFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAg
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1d
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmlu
ZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZl
cikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+
dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlw
ZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6
bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rp
bgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdl
KSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsK
ICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRp
b25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3
ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJl
cXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZv
ckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFz
dGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRp
ZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERh
dGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVmOTM1OGUw
M2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2ExMzk4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEu
LmY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBk
YXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAg
ICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5
bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5
bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42
NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRh
ID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1Nh
dmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVl
NWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihT
RUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1
c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5k
aWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmRE
YXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmln
aW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlF
UzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25z
dAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZp
ZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZv
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
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5
ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEy
NGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsy
NjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0
ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRj
NjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQy
ZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6
OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVu
ZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRi
YmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFh
NzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEo
KSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkg
OiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5S
ZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0Zjgz
NmM4NTgyMjFmZWE0NDcyZTA1NTZlLi4yOTRjMjQwNzJkYmZlOTdkMGM2NTdiOWNmOGU2MTBjNmEx
YjRjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsx
MzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVu
dGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVy
cmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZv
ck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0
aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC00MDQsNyArNDA2LDcg
QEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpA
QCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNI
YW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4
MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uZWE4OTUyZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2Vj
NWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtODksNyArODksNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
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
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRkNTljZmE3MTA2
ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYuLjliOWE5ODZjMGM5NmE4M2FjZjViODI5ZTcz
NjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBI
aWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAog
ICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXgg
PyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAg
ICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBI
aWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFT
aXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hs
aWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYz
YzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3
M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJh
bWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
YnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMz
MTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsK
ICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICBy
ZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZF
KFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRm
MTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3
NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJl
cHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFn
ZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1p
bWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZj
MzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFj
Y2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJj
NDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIw
MmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQx
Myw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdl
YktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50
ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmlu
ZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTli
ZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZi
ZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4
MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5
cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Y291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5
MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3
ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFp
blJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291
cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3
ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZl
CiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3Bs
YXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBh
cnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0t
PnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEw
ZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0
UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5
dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAg
ICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0
aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFo
aXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1
NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3
YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVU
eXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7
Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOwor
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlw
ZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJj
ZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5h
bWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJS
ZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZv
cktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwg
Zm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWlt
ZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtl
eV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJp
dmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJp
dmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBA
IC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5j
b2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIq
IGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNv
ZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3Jl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29y
ZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJkNWQ1MzgyMDU1YzkyNzE5NTc5NjdlNWZiZmJl
MjYyYWU4ZjZjNC4uNzNhOTYyYmQ0OTRlOWQxZDFkMzU0YzVkNzlmNWRiODI5MGYxYzQ0ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvbGQg
Y29uY3VycmVudCBkaXNwbGF5IGxpc3QgbG9naWMgdGhhdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAKaW5kZXggMzY5Mjk3MmRlYWE3Njk0YTFiNmMxZmZmZTQxOGU1ZmE0NzE1MjY0Yy4uYTExNWQ0
YmUxZmJiNjNmZTU4ZjU5MjFhNGUxNTk5MzllZjdiNmMzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQwLDM4ICs0MCwz
OCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0
cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0
cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hh
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
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1
ZmZlci0+c2l6ZSgpKTsKQEAgLTgwLDEyICs4MCwxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
cikKQEAgLTE1Niw3ICsxNTcsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAg
ICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAo
Y2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAg
ICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAg
ICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3Ro
ICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzIsMzAgKzE3MywzMyBAQCBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsK
LSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0
b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhf
dD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsg
J2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdq
JywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAg
YXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8g
Z2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hl
Y2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVm
ZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0
YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXpl
KCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWpr
bCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBj
aGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7
Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIp
OworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOworICAgIEVY
UEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0
YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihs
LmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIwNywxNSArMjExLDE1IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgICAgICAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAg
IGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAg
YXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAg
ICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVy
MS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAn
YScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwg
eydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2In
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywg
J2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1
MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2Zi
YzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRh
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRl
bXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBG
aWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9
CiB9CiAK
</data>
<flag name="commit-queue"
          id="470133"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445000</attachid>
            <date>2021-11-22 21:39:43 -0800</date>
            <delta_ts>2021-11-22 22:34:58 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123163941.patch</filename>
            <type>text/plain</type>
            <size>383473</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYzA2OWM0NWY1MjM0MGQ5YTE1NDJmZTY5ZDYxODlh
YjkwNGZhMmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOCBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6
CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6
bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJU
RkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxD
b252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBl
ckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRl
bXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50Rmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5n
TWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRl
bGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBs
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
CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9z
aXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpj
cmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlv
bjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVi
b2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRp
cGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVy
RnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5nIGFyZ3Vt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNhNmFmZWEu
LjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRl
Y29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJl
ZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRh
KToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
dG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5Q
ZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVi
b2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVs
ZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBj
b3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQorICAgICAg
ICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hh
cmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
IGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ciBvdGhl
ciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHktYnkgZml4
OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4gSVBDIGhh
bmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisgICAgICAg
IHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIGlu
c3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hlY2tpbmcg
Zm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2RlLCBjaGVj
a2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0Fu
ZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJv
bSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjovLzg1NjM3
NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
Y2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlciB1c2lu
ZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFkLgorICAg
ICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0b3RhbCBt
ZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sgZm9yIG51
bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAgICAgICAg
aW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291bnQuCisg
ICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJsZSBhbmQg
dGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQtc2FmZSBy
ZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhyZWFkCisg
ICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1vdmluZwor
ICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50OjpQcm92
aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNo
ZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5pbmcgY29k
ZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlz
cGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlhMmUxNWNj
Yy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxl
bWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtX
ZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2Rl
V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFvcyBNb3Vj
aHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBUZXh0RGVj
b3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
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
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkwOThlMDVh
ZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEzY2U3YTYy
MGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9y
PFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxl
ci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRh
KSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVj
b3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNo
UmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNo
ZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
LCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9u
c2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9u
c2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICszMTcsNyBA
QCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNl
Qm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0
aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBA
IC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQwMDc4NTRh
NjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3
NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcHV0V2l0
aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVz
dD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNl
cHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAgZW51bSBj
bGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdXNp
bmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxW
ZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4
ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJm
ZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJv
ZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAg
ICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJs
ZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9k
eSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAg
ICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkg
eworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9
LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZjZTI2YWIw
YTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZh
MTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2co
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVl
cnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNo
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFz
VmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29u
c3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Cit1
c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3Jt
RGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0
ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNw
b25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1
Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAg
aWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBv
YmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIu
dmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJy
YXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgi
a2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2Jq
ZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDcz
Zjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVkZmUxODI5
NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwg
Y29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAg
aWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRh
dGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1
ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlW
YWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRp
YUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBz
dGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZl
cj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRlYzQ1Zjhm
YWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTIz
NSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXIm
IG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0YUJvZHko
KS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRh
KFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IElm
IHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRvIG90aGVy
IGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAgICAgcmV0
dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlmIChhdXRv
KiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3Jl
YXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRh
OjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQs
NyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAg
ICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZl
dGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3Jt
RGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVU
RjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVmZmVyKCkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlC
dWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUx
MmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0OwogCi0gICAg
dXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9ybURhdGEo
UmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkw
OWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlw
ZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMw
Niw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0
byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2th
Z2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRl
cmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcg
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZm
ZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMwMjkzMmQ5
Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBjODgwYWI3
YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpj
b25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApA
QCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAgICAgICAg
ICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEoV1RGTW92
ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0RGF0YShX
VEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0Y2E5Li5h
MTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5h
bDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNl
RGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsK
ICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdp
dGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQx
Li42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIsNyArNTIs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2
YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdo
dEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXIKIAog
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2Rl
ciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+
ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRh
OwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3Li5h
MWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBj
bGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAg
ICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgyLDEzICsy
ODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29u
c3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lEQktleVZl
cnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVpbnQ4X3Qq
IGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNjVjNGE2
M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0OGQ2Yjhh
YjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwxMCArMzIs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBib29sIGRl
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2
MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUlu
Zm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCpt
X3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgp
KTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
Y3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4g
YSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2
NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRI
YXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQg
PSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCBy
ZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhl
IGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRv
IGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3Rl
bmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNl
IGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5
NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4g
b2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyAr
MjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5n
ZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktl
eTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhp
bXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9u
ZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVk
REI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsy
NTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAg
ICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6
bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURC
S2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ug
Zm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSBy
YW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVw
cGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24i
X3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmEx
MDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3Vy
cmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURC
Q3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxv
YihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQg
KGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5NjdhYTMu
LjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0
cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlz
UmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2Uu
aXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2Uu
YnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBp
ZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4ZWYz
NmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50
KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChhdXRvJiBt
ZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2Us
IFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJl
Y2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGNs
aWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAg
IGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJlMmZjYTBk
MzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFmNjQzYTUy
N2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVl
OwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9
IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFs
aWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjllOTBjZDU2
YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVkZSAiQ2hy
b21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
PHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKworU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19DTEFTUyhB
c3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUgbmVlZCBm
b3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFTVklubGlu
ZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJlY3Rvcnkg
PSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOworICAgIGlm
IChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGlyZWN0b3J5
KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93
aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGly
ZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9y
dCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjplbmNvZGVG
b3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsKKyAgICBh
dXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhU
b0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBpZiAo
ZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRoID0gZmls
ZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sKKyAgICBp
ZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5n
KCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAg
IGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNpemUgPSBy
ZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1f
aW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkg
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRD
aGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwg
KChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgp
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBk
b2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubW9kZWxF
bGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUp
OworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250
ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7CisgICAgaWYg
KCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0u
VVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2Vp
dmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5nKVtt
X2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6
Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6aW5s
aW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCBy
ZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVs
ZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2
aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpICYm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
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
CmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVm
ZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAg
QEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5j
b2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
bV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGVi
YjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJp
CiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJl
c291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJl
c291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNl
NjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpy
ZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVj
ZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpt
YWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVu
Y29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsK
LSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNl
NjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwog
fQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNk
MjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQo
cmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRl
eCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3
M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0
UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxv
YWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5s
b2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9w
dGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2Zi
MjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSAr
MTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAg
IGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2
ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUt
Pm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNl
LmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5t
YWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5t
aW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21t
aXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNp
emUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAt
MTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3Vy
Y2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQog
Ci1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURh
dGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpA
QCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNl
KCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJj
ZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVj
MGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJk
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3
IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNv
dXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRz
OwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNo
aXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFy
Y2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJm
cmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3Vy
Y2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYw
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlh
NGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1
MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAg
IC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1
cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVl
OTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMy
ZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
bV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRn
b2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFs
UG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2Us
IGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1Jl
cXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1
ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24o
b3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGlu
YXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYy
NjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsK
QEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBF
TkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJj
aGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFs
UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7
CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0
ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRv
bSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9j
YXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZm
NjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZlNGY1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcxLDcg
KzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0
b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVu
IGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2Nh
bCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxi
YWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8
aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmll
cigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0
ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNl
RGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURh
dGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
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
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIz
M2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2
NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyAr
ODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAg
ICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTEx
Myw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2Rl
ID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7
Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50
LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAg
ICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1
ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0Mzli
NmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVw
cmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAg
ICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
RG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNl
CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJl
c3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5y
ZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVz
cG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCBy
ZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHBy
b3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNv
dXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBp
bnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAo
cmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZl
cnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBv
ZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJl
c3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291
cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0y
NTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJh
dyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNy
ZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRh
LmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9
IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0
ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAm
ZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiAr
Mjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2Uo
ZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
Q0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5
IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQg
V2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFj
dChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQg
V2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
Q0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVN
YWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAg
TE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJj
aGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAg
Ym9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJy
ZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVh
dGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291
cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyAr
MzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGlu
ZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFy
Y2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJh
Y3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RG
TW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdl
YkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAg
ICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUg
YXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7
CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5y
ZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAor
CiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBo
ZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJM
LmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAg
IGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0g
ICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1l
IHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNo
IHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBp
ZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIw
XCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9
XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCku
c3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWVi
NjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5
NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNj
NmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhj
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAg
ICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRo
ZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0
ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlm
IChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAg
ICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRl
ZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUx
ZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3
ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBt
X2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hl
Y2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250
OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNM
b2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEw
OCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIg
YnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAt
MTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+
IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQg
PSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRh
ZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFm
MTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBz
dGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29s
IGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQ
dHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0
ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZm
NmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAt
NTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
KyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQog
ICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQu
LjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4
Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRh
dGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2
aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBw
cmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUz
MzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVh
OWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRh
KQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3
OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxv
YWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNj
ZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXgg
N2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1
MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3Mg
dG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAg
ICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQo
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2
MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRp
c2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdF
cnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwg
IWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAg
ICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2
MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxT
VkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRG
YWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0Rv
Y3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0
dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmlu
ZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQy
MjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNo
ZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRT
aXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBt
ZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYx
Li5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1
ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2
M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBD
YWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVk
U2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIx
MzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFh
OGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxv
YWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBl
dmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAg
IC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5k
ZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3
ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBA
IC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAg
ICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBz
dHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThl
MC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJl
YWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAg
Y2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5
QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0
KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVO
YW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5m
aWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAg
IAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRp
bmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIo
KTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1f
Y29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdh
MWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYw
LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBr
ZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdk
Y2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5
MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCAr
ODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAg
ICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
REZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0Owog
ICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3Jt
YXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1
cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwog
ICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hT
ZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0
b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5n
Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBl
V2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4
YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRi
ODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBh
c3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEK
IHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHBy
IHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBA
IC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAg
ZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwg
b3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBA
IC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNl
RGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2
NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApA
QCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
b3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZi
NzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0
MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3Njcz
NjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRy
aWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1
MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNh
NTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFz
dGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVi
b2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VU
eXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRo
bmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
Y291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVj
MzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBA
IHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0
cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRhY2FlYjg2
YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5YjIwNGYz
NTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXpl
KHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiAr
NjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9
CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBw
aW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6
WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwg
bWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZl
Y3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21i
aW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29t
YmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAg
ICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBo
YXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBh
cHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikg
YWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEp
Ci0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVy
biBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmICht
X3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8g
Y29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwot
ICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
LX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNv
bWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwog
fQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0x
NzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVk
QnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNo
YXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisK
K2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5t
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5t
X3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUs
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1f
c2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0g
ICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQo
IW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRh
KSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIzMiwxMiBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25l
LT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAg
ICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0K
IHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2Vn
bWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAg
ICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBl
bmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VS
VF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9
IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2Vn
bWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRp
Z3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21l
bnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2Vn
bWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXIt
Pm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIo
V1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
ZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgp
OyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01h
cHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2
OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVm
ZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3
ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUo
KSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAg
IFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEu
c2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6
ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBA
IC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21l
bnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7
IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0K
ICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91
Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5z
aHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uMmIwYTUyN2Nj
NjZkZWFhMmY1MTllYjk0ZmFmMzBjOGM3MjUxY2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ0IEBAIGNsYXNzIERlY29kZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRh
IHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQg
Y2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21i
aW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdt
ZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxl
RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRG
aWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAg
IH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwot
ICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVm
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMo
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQog
I2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50
cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4K
LSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0
ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9u
IGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIENy
ZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRl
bnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVk
IGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6
ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAg
ICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNv
bnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFs
bG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0Zp
dCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAg
ICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBG
dW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29s
IGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdM
SUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0
cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21l
bnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0gICAgICAg
IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2Vn
bWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAgICAgc3Rk
Ojp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0
YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEo
KSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNo
YXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERh
dGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNo
YXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0
IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNv
bnN0OwogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXpl
X3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjA4LDk4IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsK
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJv
b2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwg
dGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAg
ICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
dG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYm
KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRp
Z3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBi
b29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsK
LSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
LSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAot
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
b25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0
cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzA5LDIxIEBA
IGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUg
PSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
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
bmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJhNzQxYTU3
MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxv
d3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5j
dGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAj
aWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0
cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQpA
QCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNv
b24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQog
ewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9z
aXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMx
OGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2Zj
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0
eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlm
ZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZU
b1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSBy
ZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsg
fV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApA
QCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dp
dGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTli
ODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAt
MzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGlu
dGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25z
dCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIp
cG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRp
b247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClk
ZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29y
ZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9u
IHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3Qo
ZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEo
KSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
KCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAg
aWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkg
PT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3Jl
YXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNl
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJl
dGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9j
XSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4
MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmpl
Y3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhl
IHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsK
IAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlm
ICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThj
OTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5
NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcg
KzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5
aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1w
dHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5p
dERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRh
KCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyAr
MjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwg
IWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgp
OwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8g
a2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYw
MDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJh
YWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBA
QCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwg
VHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rlckdl
bmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIu
YnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVk
OGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMw
MGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9h
cnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydCht
X3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBH
UmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3Zhcmlh
bnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4u
YzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
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
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2
NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEy
ZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1f
cGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVx
dWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAg
ICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1
ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUw
YzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVu
c2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQq
IGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAg
ICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNl
U2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VT
aXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwx
NSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNp
ZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0
aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIn
cyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlz
LCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rl
ci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAj
ZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8g
V2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdl
dEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHBy
b3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0
aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNp
bmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0
Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRC
eXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNpemUoKSwgJnByb3Zp
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
ZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2MzNkNzk5
YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7Ci0g
ICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0
IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFj
ZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgYnVmZmVy
LnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwg
YnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmlu
ZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFl
YmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3Rf
Q2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWly
b0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAg
IEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0y
NjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVT
aXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYg
VVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2Yu
LjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1h
cHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNp
emUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0
IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3NTk4
OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3YTkx
YmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0
Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBA
IC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQog
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
LmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkxLi5kNTZi
MTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcg
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0
RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRh
dGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgp
LT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERh
dGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQy
NzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi43OGNhZTVhYmI1ODJmMGYwODhiM2U4OWFmY2Vh
NTNkMTAzYmIxMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQ
YXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIg
bWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJr
dXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNl
ZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUo
dW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBh
eWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQw
YWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYyYTI2ZGMz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChz
eXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3Zl
KHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXls
b2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDEx
M2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThl
MGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQ
bGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwg
d2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0
aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEw
MzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJD
T1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dF
QkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4
MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2
ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0
YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
bV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRo
RGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9
CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUy
ZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRo
VmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29y
cmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0
SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgp
IGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAg
LTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBh
cnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFy
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpB
c3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlw
ZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVj
dCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6
VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRz
WzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4K
IAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlh
bnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jk
c1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJp
YW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3Bl
blR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAg
IGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlw
aEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1h
dGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhv
cml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3Ry
dWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNh
bCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGds
eXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0
aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90
KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZz
ZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25z
dGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEds
eXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyAr
MjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyog
bWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNm
NTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMw
N2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9u
dDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBl
TWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9w
ZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9Q
RU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0Uo
SEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUx
ZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwog
dHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMs
IGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwg
MTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAg
IGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAK
IHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAg
IHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8
IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAv
LyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAg
Y29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4o
dGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJh
Z2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0
cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9v
bCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4
KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlw
aCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2gg
KGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJh
Z2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2
ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2NjNjM5ZjY0NzJm
NzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTks
NyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFk
ZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhl
IG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6
ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBy
ZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZv
bnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2OSw3ICsyNjks
NyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnRE
YXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZv
bnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRpZ3VvdXMoKSwg
Zm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFj
NDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjY4Y2FmNGQ5YjEyNDg5ZDlkOGU1
ZDNiMGFhZGQwMDM1Y2NjMjE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtNTQs
NyArNTQsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwog
fTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYs
IFZlY3Rvcjx1aW50OF90PiYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKIFJlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1
ZmYzNDhkNThlMmIuLjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4MzJhM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBz
dHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJs
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4m
IGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAg
IGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJs
ZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
CiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRh
YmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFU
YWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2
LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+
Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZl
ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5
YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uZmRhNmNjNGRkODc2NTNhMTc4NzkzYTcwOWY3
M2QwZTMxOWYxZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEyLDEw
ICsxMTIsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBhdXRvIGZvbnRSZXNvdXJj
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZv
bnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRm9udFBsYXRmb3JtRGF0
YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9u
LCBmb250UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGEgPSB7IGNvbnRpZ3VvdXNCdWZmZXIuZ2V0KCksIGl0ZW1J
bkNvbGxlY3Rpb24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CiAgICAgYXV0byBy
ZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnROYW1lLCBXVEZN
b3ZlKGNyZWF0aW9uRGF0YSkpOwogI2lmIFVTRShDT1JFX1RFWFQpCi0gICAgcmVzdWx0LT5mb250
RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJv
bURhdGEoYnVmZmVyLmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgcmVzdWx0LT5mb250RGVz
Y3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURh
dGEoY29udGlndW91c0J1ZmZlci0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICNlbmRpZgogICAg
IHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
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
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjdmNGQw
OTYyMDA1NjkxNjZkNzUxOTYzODkyYzg4OWRkNTI0Nzc5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAg
Kzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBw
YXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNv
bnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
Y29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtp
XS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50
LmNsaWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQpIHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RP
ZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBm
cm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RP
ZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBm
cm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0
ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAKICAgICBpZiAoY29udGVudC5kYXRh
SW5SVEZGb3JtYXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopa1VUVHlwZVJURl07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAKICAgICBp
ZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNEYXRh
ICpodG1sQXNEYXRhID0gWyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CkBAIC01MDEsNyArNTAxLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVu
dE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21E
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAo
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQo
cmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0K
QEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFz
dGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRh
LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAo
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEko
dXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVU
eXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VE
YXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNp
emU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVd
OwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8g
UEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAg
ICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFG
b3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7
Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAg
IGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAg
ZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVt
UHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5l
XTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3Jp
Z2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZm
ZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAg
ICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8v
IFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURh
dGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAg
ICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRl
ZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAg
ICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRv
IHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyAr
NjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7
Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07
CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0
Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRl
eCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNd
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVi
b2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjku
LmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0Zp
bGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJ
bWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVu
YW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9
CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJ
dGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4g
c3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVt
SW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2Fy
ZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAg
ICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0
eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
aXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAg
ICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0
ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0
ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEz
MWYyMTRiOGRhLi4zYjI4YmJkMTAyNTBhYWNjMzNiNWRhYzBmMWRiYmNkOGI1ZTUxZDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAt
MTE2LDIzICsxMTYsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAg
YXV0byB3ZWJBcmNoaXZlVHlwZSA9IGJyaWRnZV9jYXN0KGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJl
ZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgQ0ZTVFIoIkFw
cGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSIpLCBudWxscHRyKSkpOwogICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKKyAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2Vi
QXJjaGl2ZVR5cGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgICAgIGlmICh3ZWJDb250ZW50LT5k
YXRhSW5SVEZERm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2Vi
Q29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlUlRGRF07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKICAgICAgICAgaWYg
KHdlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKICAg
ICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgpKQogICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9y
bWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOwogICAgICAgICBpZiAoIXdlYkNvbnRl
bnQtPmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQ
YXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50
VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndl
YkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5
cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0
YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdp
bik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJl
YWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07
CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkx
NGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiAr
NjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5
cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9h
cmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMo
W2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFz
dGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9h
cmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkg
ewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdl
dCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRf
dCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVi
b2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAg
ICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAK
ICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAt
MzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0
ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwor
ICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlw
ZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRp
YyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJv
YXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5k
ZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0p
IHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3Vz
dG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNl
dERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAg
fSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
KSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
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
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMu
LmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBf
cmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9u
Z1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAg
ICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNE
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0
cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAg
ICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VS
TFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsK
ICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihV
UkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVm
NzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRv
d24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3ND
b250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAg
ICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9j
ZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAg
IH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9j
ZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3Rh
cnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVw
IHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRh
dGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZl
ci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92
ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2Un
bGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3Zl
KDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUx
ZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMy
OTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRs
ZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAK
IHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNk
NzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRS
ZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwg
YnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNl
aXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNv
bnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2Fk
TWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1
YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4
IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVm
ZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0
YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmls
ZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0
ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRl
U3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAg
ICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXpl
KCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVI
YW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3Jp
dHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAg
aWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZh
MGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uODljZmQ3MmRhODhiNTMyYTE0YmQw
Zjc5M2VkNzk4MTc0OGI3MTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
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
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBh
YjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRh
KSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOwotICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAg
ICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGln
dW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAg
ICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0
YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1f
ZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlk
NWUzNGQ3NTFhZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcg
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
bktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNs
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
cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMz
NmM4Li5iNzc4OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0
b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNp
emUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25z
ZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIw
ZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlm
IChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRm
YmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVj
b3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0
aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNw
b25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3Qg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBi
b2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdU
Rk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHku
c2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXpl
KCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5
ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1
OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAg
QEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAog
CiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsK
KyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
Ym9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1f
YnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAg
cmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBk
ZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2
NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5
ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJk
MWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5
KCkgPSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
IHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZj
YmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6
ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUy
YWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVy
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgog
ICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMg
dW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsK
IAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1
NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgs
NyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNp
Z25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2
ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBt
X2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4g
cmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5
ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwog
ICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0
eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5n
IGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZh
bHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFj
ZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xs
ZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmlu
ZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1
MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBv
ZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0
aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2
YTlkNDJlYzlmOTZiYTM4ZmJlNTEyNTU2ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMw
ODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcApAQCAtNTUsNDkgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLSNpZiBVU0UoQ0YpCi1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURl
YWxsb2NhdGUodm9pZCAqcHRyLCB2b2lkICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0
YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2Vk
IGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAg
IAotc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3Vy
Y2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxv
Y2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBO
VUxMLCAvLyByZXRhaW4KLSAgICAgICAgTlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAv
LyBjb3B5RGVzY3JpcHRpb24KLSAgICAgICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVM
TCwgLy8gcmVhbGxvY2F0ZQotICAgICAgICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0g
ICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0K
LSNlbmRpZgotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKCkKLXsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBT
aGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFs
bG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAg
YXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxs
b2NhdG9yLmdldCgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5n
ZXQoKSk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9w
dEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQq
IGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+
ZGVyZWYoKTsKLSAgICB9LCB0aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGJ5dGVzLmdldCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci0jZW5kaWYKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRo
aXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsg
KnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJl
ZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFw
KCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVh
YmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVk
TWVtb3J5LCB1bnNpZ25lZAogewogfQogCi1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJl
c291cmNlKCkKLXsKLX0KK1NoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9
IGRlZmF1bHQ7CiAKIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKIHsKQEAgLTE2Miw3ICsxMjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJj
ZTo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFk
OWRlMzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNk
N2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVz
b3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hh
cmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVz
b3VyY2U+IHsKIHB1YmxpYzoKIAogICAgIGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAg
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwg
SGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEy
ICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNl
KFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1
ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1
bnNpZ25lZCBtX29mZnNldDsKLSAgICB1bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVu
c2lnbmVkIG1fb2Zmc2V0OworICAgIGNvbnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3
Yi4uMTU1ZGU3ODIxZGZiZmYzNDI5MjI2YTNlODNjZjY5M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkx
LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAg
ICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQ
dHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7
Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5k
bGUpKQpAQCAtMjM0LDEzICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBp
ZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXpl
KTsKKyAgICBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihi
dWZmZXJTaXplKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0
aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsK
ICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0
KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYx
LDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVz
QW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNp
emUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRh
U2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0
YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICsz
NTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVw
ZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlT
aXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJC
b2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVm
ZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkg
fX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDEzICszMDMxLDIzIEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNv
bnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpAQCAtMzA5NSw3ICszMTA1LDcgQEAgc3RkOjpv
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
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4
MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEo
KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2
b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXgg
YWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYw
ZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3Jh
cHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4
LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBo
YXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1h
Z2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNF
bmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5k
ZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0
MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0
aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1
bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4
X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAz
MDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0Vt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJH
ZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdy
YXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
ICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxp
emVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRj
ZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZv
aWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hs
aWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50
ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhp
Z2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdo
bGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdo
dDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91
cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6
c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hs
aWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZ
ZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQppbmRleCAxNzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3
Li5iYmVmNjY3MzUxYTBhMmJmNThkZmFmNWE3MjEwMDA2YTMxOGVhZjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgICAg
IGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KDApOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGlwY0hhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CiAgICAgICAgIGF1dG8gbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlw
ZSk7CiAgICAgICAgIGRpZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJvYXJkKGNvbm5lY3Rpb24sIHBh
c3RlYm9hcmROYW1lLCBwcmV2aW91c0NoYW5nZUNvdW50LCBuZXdDaGFuZ2VDb3VudCk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2Mzkx
NjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdi
NGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
QEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlm
IChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1f
cGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVn
YWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5k
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAg
ICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAg
IH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgog
ICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2
aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAg
ICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFz
dGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApA
QCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0
ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYg
bV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihf
X2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9
CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAg
ICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxz
ZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxl
V3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhS
ZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7
CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07
Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAg
ICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3Rl
Ym9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5Mjgu
LjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRl
cnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJF
dmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVs
ZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5
KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA1M2JiNmQ1ZGQxMGNiNjM1M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3Li44
ODgyN2ViMjkxMmE1MzRlOTI1YmI1ZmE4Zjk2MjNhZWMzYTEzOThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93
VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9u
ZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXgg
ZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQz
ZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRp
b25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0Rh
dGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBt
X3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9
OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJv
ciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0t
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
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2
ODdiOWY5MWJjNzM4MmNhN2NiMGZmM2QuLjY1ZTVkODJhMzU3YmNiYWFmOTUwOTAzODVkMmFlZGEy
ZWRmMzQyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTClj
YW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5k
ZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJv
YXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAq
ZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2lu
KQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNjU5
NCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJ
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgp
KS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwog
CkBAIC03NTY1LDcgKzc1NjUsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBm
aWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5n
KilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmls
ZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwot
ICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJl
RGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2Vs
ZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpi
b3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCA0Njc5ZDdiMDk4MWFhN2QzZmNkOWJkZTkwZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZi
OWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJp
bmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFn
ZUhhbmRsZQogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVf
dD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9y
eUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKICAgICBw
YWdlQ2xpZW50KCkuc2F2ZUltYWdlVG9MaWJyYXJ5KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDZk
MzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0ZWQ5Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3
MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdl
UHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQw
LDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAgYXV0byBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkp
LCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBib29sIFdlYlBhZ2VQ
cm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCkBAIC0yNzUsMTUgKzI3NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAg
IGF1dG8gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hh
cmVkTWVtb3J5SW1hZ2UpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
c2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6
ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUltYWdlLT5kYXRhKCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKLQogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5
OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGFyY2hp
dmVCdWZmZXIgPSBzaGFyZWRNZW1vcnlBcmNoaXZlLT5jcmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2
ZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgfQogICAgIHBhZ2VDbGllbnQoKS5zZXRQcm9taXNlZERh
dGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShpbWFnZUJ1ZmZlciksIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5z
aW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBXVEZNb3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmln
aW5JZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5
MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVy
dGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50
RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4
NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZl
MzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAg
LTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21f
Y29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9h
cmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8
V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAg
ICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0
KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVy
IHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5n
ZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlw
ZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAg
ICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5
cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4
ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJh
NGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAg
ICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3Jl
YXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkg
ewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFw
cGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJy
YXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5
ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3
YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdl
JiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENo
YW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3Rp
bmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgw
YTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVs
ZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAg
ICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihj
b25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAg
IFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAg
ICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVX
aXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIp
OworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciop
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVh
c2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1f
Y2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwg
dG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5n
TmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4
OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNm
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3
YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1
OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcx
YWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2Vu
ZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYg
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
cHAKaW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3MmUwNTU2ZS4uMjk0YzI0
MDcyZGJmZTk3ZDBjNjU3YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5
cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBv
dmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFz
dGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAg
ICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0
ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpA
QCAtMTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKGlwY0hh
bmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlw
Y0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBp
ZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRh
U2l6ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0
ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRl
eHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNo
YXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNo
YXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7
CiB9CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLmVh
ODk1MmRiNTkxN2Y0MTdmYjY1YTMxOGNmMzdlYzVlZWFhZGJhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5n
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
aW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2Ji
ZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9u
c2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdl
LT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgp
LT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
aW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1l
CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJj
aGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsK
KyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZl
U2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZm
ZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4u
OTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBA
IFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0
YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNv
ZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVu
dHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBkZDU5Y2ZhNzEwNmYwODQ0MmUzZmIzOTkzYjFhODgwODgxZjdiYTM2
Li45YjlhOTg2YzBjOTZhODNhY2Y1YjgyOWU3MzYzOTA3MTc1NWM2YmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzczNSw3ICs3NzM1LDcg
QEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29u
c3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNI
YW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNj
cm9sbFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9y
YWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KHNoYXJlZE1lbW9yeS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hp
Z2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4u
MmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3
ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rp
b24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4
IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2Zj
Yzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEg
KzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJ
S0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0
cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcg
KzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEu
LjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcg
KzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURh
dGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0
NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZj
YjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyBy
ZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQx
YTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAy
ZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4u
MTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBl
cyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIw
OSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4
LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRi
Li5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyAr
NDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJl
cHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBl
ZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYy
ZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBA
IC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJj
ZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAg
ICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+
ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAg
ICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1l
bnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRB
cmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNk
NjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNh
MWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+
IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAg
ICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQot
ICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSku
Z2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEw
MTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2
b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNv
dXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpk
YXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJs
ID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5p
bCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsK
LSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291
cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBm
cmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVU
eXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpX
ZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5T
RGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5n
ICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5n
KCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICBy
ZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVE
YXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5z
aXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFi
ZDVkNTM4MjA1NWM5MjcxOTU3OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2MmJkNDk0ZTlkMWQx
ZDM1NGM1ZDc5ZjVkYjgyOTBmMWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMiAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2lj
IHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZj
MWZmZmU0MThlNWZhNDcxNTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5ZWY3
YjZjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwog
ICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBF
WFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5k
YXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5j
bGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiArODAs
MTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1
b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRp
Z3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAx
KTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgp
W3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwor
ICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJl
ZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAt
MTcyLDMwICsxNzMsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydh
JywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAn
ZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307
Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBn
aDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBh
dXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wg
PSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7Cisg
ICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNp
emUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdo
Iik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAg
Y2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlq
a2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRh
KCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZm
ZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRh
KCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgp
LCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUo
KSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0No
YXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQog
CkBAIC0yMDcsMTUgKzIxMSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRv
KQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAg
IHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydh
JywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydh
J319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywg
J2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2Mn
LCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7Cisg
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0g
fSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEw
Li44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="470137"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445002</attachid>
            <date>2021-11-22 21:47:11 -0800</date>
            <delta_ts>2021-11-22 22:21:24 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123164708.patch</filename>
            <type>text/plain</type>
            <size>383700</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uMmIw
YTUyN2NjNjZkZWFhMmY1MTllYjk0ZmFmMzBjOGM3MjUxY2ZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ0IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAg
ICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisj
ZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAg
ICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjA4LDk4IEBAIHB1YmxpYzoKICAg
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
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7
IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYK
IH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5k
IHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
U2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAg
ICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywg
aXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9p
ZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmls
ZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVT
RShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRh
dGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzA5
LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgp
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoK
LSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4m
Jiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5l
d1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4g
bV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAg
ICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgx
MmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5n
ZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBu
c0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2
MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1
Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1
dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1h
dF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVm
ZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJh
NzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlv
biBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhp
cyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRp
b24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50
cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJl
dGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURh
dGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBk
YXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7Cisg
ICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAg
ICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMw
ODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3
Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVy
dFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05T
Qml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtp
bWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRp
ZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5k
aWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRU
eXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYx
ODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBf
cG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdl
X2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVD
RkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7
CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5z
aXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJl
c291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNB
cnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9
CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRh
IGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCld
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3
ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpT
T05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
ICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3
YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUz
ZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAt
MTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRh
LmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRh
ID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRh
LT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwog
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0y
MDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291
bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3
LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
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
OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fz
c2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZt
X3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIx
MWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0
cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4u
YjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+
IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdp
biBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0
YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ss
IGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9u
dD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0
YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxE
YXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3
cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZj
NGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4Yzgy
OTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBW
aXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxs
YmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIElu
dGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
PSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4
NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3
NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBj
bGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNl
cyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBD
cmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7Cisg
ICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAg
IFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVm
PEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1
Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIg
KzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1Jl
ZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwog
fQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBl
LCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1v
dmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2
NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEw
YzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwot
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVy
IDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcg
QEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBl
KSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdU
Rk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZj
NTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1
MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVh
ZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZm
ZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1
ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2
YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkp
OwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1
LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0
b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVy
ZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYs
NyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0y
ODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxT
Zm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9v
bCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVy
dFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEw
N2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAy
Y2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgot
Ym9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGlu
dmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8v
IGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVl
IGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wg
Y29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBh
bmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAv
LyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1
ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3
aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXgg
YzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQw
Nzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmlu
Zz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYy
YmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4g
cGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCBy
ZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
fQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBl
ID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5p
dGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0
aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsK
ICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAo
aW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAg
YXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwg
aW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5z
aXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlv
biBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0g
b3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNl
bmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywg
W10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAg
ICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJl
ZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3Rv
cmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
eyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
ICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVz
dCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNl
Q2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25z
ZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAg
ICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAg
ICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250
ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9u
c2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVz
dC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFM
OjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZh
aXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFy
Oi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNl
IEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkz
NCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3Ig
KE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjph
cHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewog
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9
IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25z
dCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlS
CiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYg
KGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3Jl
cXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlm
aWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlv
bnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVl
c3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyAr
MTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2Ut
PnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0Rh
dGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNE
YXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3RE
YXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29u
ZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0
U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRl
cywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNo
T2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURz
ID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAg
ICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50
S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmll
cjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
a2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJl
cXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJ
RCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29u
dGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgp
IG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNv
bgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byog
Y2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50
S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmll
cjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJl
cXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJl
dGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50
S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJm
Li5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRh
UmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40
ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3
ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2Vn
bWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdt
ZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQg
fHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNl
ciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFy
c2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjEx
MDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0
Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgs
NyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNv
ZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkp
IHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAg
IH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRi
ZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkK
IHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qg
c291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBz
b3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsK
ICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNl
R2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAg
ICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAg
LTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0
YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0
aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRC
dWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3Vu
ZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBh
dCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAg
ICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4g
dGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJh
bnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBm
b3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVy
RGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRl
cihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzcz
MmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYy
ZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0
ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVy
biBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5
ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3
OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0
YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0
byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4o
cmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2Vn
bWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0
Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0
YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRh
NWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3Jt
RGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJs
ZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2
MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVU
eXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwg
YnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBl
RmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
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
cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkx
Li5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVk
dWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUi
LCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAg
ICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJp
bml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdT
VF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5p
dERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZl
NzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi43OGNhZTVhYmI1ODJmMGYwODhiM2U4
OWFmY2VhNTNkMTAzYmIxMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdN
YXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQ
YXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50
LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1
bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdU
Rk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQg
fHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3
MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYy
YTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5
c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0
ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChX
VEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRl
ZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4
M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJu
IEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRh
dGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwg
JmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1
Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYw
MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9Owog
Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdi
MDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0
MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1l
bnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGlu
aXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQ
YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkw
MzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUx
YzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
c3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBl
OjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFs
aWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2
X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRd
KSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3Zl
cmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBN
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBA
IHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNv
cmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJp
YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4m
IHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50
UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25z
dHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5
cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAg
ICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNl
dDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3Ry
dWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2
ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRp
Y2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0
cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVp
bnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsy
MDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFu
dHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0y
MjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlh
bnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJp
YW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkw
YmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZk
ZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3
ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9w
ZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5B
QkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxp
ZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1
NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlw
aElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gy
LCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gz
KSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkp
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQog
ewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlz
VmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3Np
dGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3
ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAg
ICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRp
b24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4
LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3Qg
Q292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFn
ZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlw
aCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8g
Q292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2
YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2NjNjM5
ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAK
IC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0
ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0
aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6
ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2OSw3
ICsyNjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRl
bkZvbnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3Jp
dHRlbkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRpZ3Vv
dXMoKSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4
IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3Nzc5
ODM5NGFmYTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApA
QCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFu
VVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7
CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9
OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYg
YWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9w
ZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwK
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFi
bGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRh
YmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4o
YnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYs
NyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6Omxv
YWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0
IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVu
VHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5n
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVy
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODlj
M2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5Zjcz
ZDBlMzE5ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIsMTAg
KzExMiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291cmNl
ID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9u
dFJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24s
IGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRlbUlu
Q29sbGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdURk1v
dmUoY3JlYXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9t
RGF0YShidWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnREZXNj
cmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0
YShjb250aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
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
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0ZDA5
NjIwMDU2OTE2NmQ3NTE5NjM4OTJjODg5ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCAr
NzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBh
c3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29u
dGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQu
Y2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNo
aXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZ107CiAgICAgfQogCkBAIC00ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjb250ZW50LmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJ
blJURkZvcm1hdCkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKilrVVRUeXBlUlRGXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAgIGlm
ICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0RhdGEg
Kmh0bWxBc0RhdGEgPSBbKE5TU3RyaW5nICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21E
YXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50
T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChy
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpA
QCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEu
c2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpk
YXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1
dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5
cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpp
bWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07
CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0
eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQ
QVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAg
ICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsK
LSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Q
cm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVd
OwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmln
aW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZl
ciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAg
IGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8g
V2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0
YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAg
IC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVk
IHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAg
IC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8g
dmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2
NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsK
LSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsK
ICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2
LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4
IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10p
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3Ry
aW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
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
ZjIxNGI4ZGEuLjNiMjhiYmQxMDI1MGFhY2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0x
MTYsMjMgKzExNiwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBh
dXRvIHdlYkFyY2hpdmVUeXBlID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVm
ZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBw
bGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJB
cmNoaXZlVHlwZS5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRh
dGFJblJURkRGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5T
UGFzdGVib2FyZFR5cGVSVEZEXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBpZiAo
d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAg
ICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3Jt
YXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29udGVu
dC0+ZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
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
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
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
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
ZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVh
Li5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRh
KCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRl
bXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhh
bmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0
dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBp
ZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEw
YmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi44OWNmZDcyZGE4OGI1MzJhMTRiZDBm
NzkzZWQ3OTgxNzQ4YjcxNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAg
ICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0g
Ynl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExh
c3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkp
OwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApp
bmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVh
YmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBh
dXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0
cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNw
b25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFp
bnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0
aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNp
emUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBj
YWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZh
bGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25z
ZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9y
ID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5z
aXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3Ry
aW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFi
MzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBA
IHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21G
b250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEp
IHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJp
bmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1
b3VzRGF0YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9l
cnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1
ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZv
aWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0
Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3Jt
RGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0s
IFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRp
ZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIx
MWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApA
QCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNl
cyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmco
KmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJl
ZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFn
ZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXgg
ZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYy
NzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBk
b2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVk
UmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAo
cmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEw
ODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2Nzdm
NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5G
dW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwog
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
ewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJi
M2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVj
ZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAg
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1
dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRh
dGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsg
cG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2
YzguLmI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rv
cjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6
ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNl
LnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46
OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBm
ZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYg
KGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZi
ZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNv
cmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRp
b24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAg
ICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJv
ZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0
aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFn
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RG
TW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5z
aXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUo
KSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDll
MmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5
ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBA
QCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAK
ICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9i
dWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgewor
ICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBi
b2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9i
dWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICBy
ZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRm
OGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2
Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlk
MDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQx
YTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHko
KSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
IDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1
b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZl
cjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
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
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZh
OWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4
NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCkBAIC01NSw0OSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmIFVTRShDRikKLXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVh
bGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgc3Rh
dGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCi19Ci0gICAg
Ci1zdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJj
ZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBDRkFsbG9j
YXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKLSAgICAgICAgcmVzb3VyY2UsCi0gICAgICAgIE5V
TEwsIC8vIHJldGFpbgotICAgICAgICBOVUxMLCAvLyByZWxlYXNlCi0gICAgICAgIE5VTEwsIC8v
IGNvcHlEZXNjcmlwdGlvbgotICAgICAgICBOVUxMLCAvLyBhbGxvY2F0ZQotICAgICAgICBOVUxM
LCAvLyByZWFsbG9jYXRlCi0gICAgICAgIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSwKLSAg
ICAgICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQotICAgIH07Ci0KLSAgICByZXR1cm4gYWRvcHRD
RihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwotfQot
I2VuZGlmCi0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5T
aGFyZWRCdWZmZXIoKQotewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNo
YXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQotI2lmIFVTRShDRikKLSAgICBhdXRvIGRlYWxs
b2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBh
dXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxv
Y2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdl
dCgpKTsKLSNlbGlmIFVTRShHTElCKQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0
R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCog
ZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5k
ZXJlZigpOwotICAgIH0sIHRoaXMpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Ynl0ZXMuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLSNlbmRpZgorICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhp
cyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAq
dGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQorICAgIH0pOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAo
KnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBAQCBTaGFyZWFi
bGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRN
ZW1vcnksIHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVz
b3VyY2UoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpID0g
ZGVmYXVsdDsKIAogYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYg
aGFuZGxlKQogewpAQCAtMTYyLDcgKzEyNiw3IEBAIHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNl
OjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaXplOwogfQotICAgIAorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5
ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3
Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
QEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1jbGFzcyBTaGFyZWFibGVSZXNv
dXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CitjbGFzcyBTaGFy
ZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVSZXNv
dXJjZT4gewogcHVibGljOgogCiAgICAgY2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBI
YW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsMTIg
KzgwLDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2Uo
UmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVm
ZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIAotICAgIHVu
c2lnbmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fc2l6ZTsgICAgCisgICAgY29uc3QgdW5z
aWduZWQgbV9vZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaXplOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBjMGI2ZWYzZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2JkMTliYjY0ZDdi
Li4xNTVkZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2NmNjkzZDZkYWI0MjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEs
NyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAg
ICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsK
LSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRs
ZSkpCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlm
IChzaGFyZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1ZmZlclNpemUp
OworICAgIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1
ZmZlclNpemUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRp
YyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwog
ICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEs
MTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNB
bmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6
ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFT
aXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRh
LmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBk
YXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNp
emU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVz
cG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJv
ZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZm
ZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxs
KCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUp
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpv
cHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAor
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29u
c3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBAIC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9w
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
b2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
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
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcu
LmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
MCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXpl
KTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBl
KTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFz
dGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2
Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0
ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYg
KFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9w
YWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAg
fQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAg
ICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZp
c2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAg
ICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBA
IC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9f
YnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0K
IApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVX
cmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJl
c3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsK
IAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0
YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAg
ICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVi
b2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4u
NTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVy
cHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2Uo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nhcnko
V2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4
ODI3ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dU
b2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25k
ZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBk
ZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNl
NDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlv
blR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0
YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07
CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9y
LCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1n
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
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0
ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bh
c3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCBy
YW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0
YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFs
OwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1
MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRh
UmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0NDcyZTA1NTZlLi4yOTRjMjQw
NzJkYmZlOTdkMGM2NTdiOWNmOGU2MTBjNmExYjRjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92
ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0
ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAg
IC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3Rl
Ym9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBA
IC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFu
ZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlm
ICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFT
aXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAg
ICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5k
ZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4
dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsK
IH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uZWE4
OTUyZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
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
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGRkNTljZmE3MTA2ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYu
LjliOWE5ODZjMGM5NmE4M2FjZjViODI5ZTczNjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25z
dCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9y
YWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hh
bmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Ny
b2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVT
aGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGln
aGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
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
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJk
NWQ1MzgyMDU1YzkyNzE5NTc5NjdlNWZiZmJlMjYyYWU4ZjZjNC4uNzNhOTYyYmQ0OTRlOWQxZDFk
MzU0YzVkNzlmNWRiODI5MGYxYzQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCiAyMDIxLTExLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBvbGQgY29uY3VycmVudCBkaXNwbGF5IGxpc3QgbG9naWMg
dGhhdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMzY5Mjk3MmRlYWE3Njk0YTFiNmMx
ZmZmZTQxOGU1ZmE0NzE1MjY0Yy4uYTExNWQ0YmUxZmJiNjNmZTU4ZjU5MjFhNGUxNTk5MzllZjdi
NmMzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTQwLDM4ICs0MCwzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
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+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNs
ZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgwLDEyICs4MCwx
MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3Vv
dXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGln
dW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClb
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Cisg
ICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1Niw3ICsxNTcsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVk
QnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkp
OwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5k
YXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0x
NzIsMzAgKzE3MywzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2En
LCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdn
JywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsK
LSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdo
MSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1
dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9
IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAg
ICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6
ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2gi
KTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBj
aGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWpr
bC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEo
KSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZl
ci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEo
KSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCks
IGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgp
KTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hh
clB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAK
QEAgLTIwNywxNSArMjExLDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8p
CiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAg
cmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1
ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2En
LCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAn
YicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2En
fX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAn
YycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9
KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAu
Ljg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="470135"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445003</attachid>
            <date>2021-11-22 22:01:07 -0800</date>
            <delta_ts>2021-11-22 23:21:14 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123170105.patch</filename>
            <type>text/plain</type>
            <size>384438</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uMmIw
YTUyN2NjNjZkZWFhMmY1MTllYjk0ZmFmMzBjOGM3MjUxY2ZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ0IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAg
ICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisj
ZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAg
ICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjA4LDk4IEBAIHB1YmxpYzoKICAg
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
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBh
bGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0
ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7
IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NFUlRfRU5B
QkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYK
IH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5k
IHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
U2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7
CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAg
ICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywg
aXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9p
ZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0
IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVN
YXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmls
ZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVT
RShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRh
dGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzA5
LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgp
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoK
LSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4m
Jiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5l
d1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4g
bV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAg
ICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgx
MmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5n
ZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBu
c0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2
MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1
Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1
dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1h
dF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVm
ZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJh
NzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlv
biBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhp
cyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRp
b24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50
cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJl
dGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURh
dGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBk
YXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7Cisg
ICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAg
ICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMw
ODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3
Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1B
QykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVy
dFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05T
Qml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtp
bWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRp
ZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5k
aWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRU
eXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYx
ODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBf
cG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdl
X2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVD
RkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7
CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5z
aXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJl
c291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNB
cnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9
CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRh
IGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCld
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3
ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpT
T05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5p
bmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
ICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3
YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUz
ZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAt
MTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRh
LmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRh
ID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRh
LT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwog
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0y
MDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291
bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3
LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNP
TiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMi
CiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBp
cyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5n
IHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
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
OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fz
c2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZt
X3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIx
MWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0
cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4u
YjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+
IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdp
biBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0
YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ss
IGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9u
dD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0
YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxE
YXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3
cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZj
NGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4Yzgy
OTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBW
aXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxs
YmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIElu
dGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
PSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4
NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3
NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBj
bGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNl
cyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBD
cmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7Cisg
ICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAg
IFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVm
PEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1
Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIg
KzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1Jl
ZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwog
fQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBl
LCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1v
dmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2
NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEw
YzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21p
bWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwot
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVy
IDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcg
QEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBl
KSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdU
Rk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZj
NTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1
MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVh
ZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1
aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZm
ZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1
ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2
YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkp
OwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1
LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0
b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVy
ZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYs
NyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVy
dFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0y
ODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYs
IFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxT
Zm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9v
bCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVy
dFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEw
N2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAy
Y2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgot
Ym9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGlu
dmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8v
IGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVl
IGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZG
VG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wg
Y29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBh
bmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAv
LyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1
ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3
aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXgg
YzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQw
Nzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmlu
Zz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYy
YmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4g
cGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCBy
ZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
fQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBl
ID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5p
dGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0
aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsK
ICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAo
aW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAg
YXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwg
aW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5z
aXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlv
biBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0g
b3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNl
bmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywg
W10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAg
ICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJl
ZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3Rv
cmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
eyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
ICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVz
dCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNl
Q2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25z
ZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAg
ICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAg
ICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250
ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9u
c2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVz
dC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFM
OjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZh
aXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFy
Oi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNl
IEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkz
NCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3Ig
KE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Np
b25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjph
cHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewog
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9
IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25z
dCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlS
CiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYg
KGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3Jl
cXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlm
aWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlv
bnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVl
c3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyAr
MTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2Ut
PnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0Rh
dGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNE
YXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3RE
YXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29u
ZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0
U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRl
cywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNo
T2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1
cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURz
ID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAg
ICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50
S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmll
cjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
a2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJl
cXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJ
RCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29u
dGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgp
IG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNv
bgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byog
Y2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50
S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmll
cjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJl
cXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJl
dGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50
S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJm
Li5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRh
UmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40
ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3
ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2Vn
bWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdt
ZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQg
fHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNl
ciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFy
c2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjEx
MDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0
Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgs
NyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNv
ZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkp
IHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAg
IH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRi
ZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkK
IHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qg
c291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBz
b3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsK
ICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNl
R2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAg
ICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAg
LTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0
YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0
aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRC
dWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3Vu
ZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBh
dCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAg
ICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4g
dGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJh
bnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBm
b3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVy
RGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNpemUoKSwg
JnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRl
cihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzcz
MmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYy
ZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0
ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVy
biBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5
ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3
OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0
YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0
byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4o
cmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2Vn
bWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0
Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0
YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRh
NWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3Jt
RGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJs
ZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2
MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVU
eXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwg
YnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBl
RmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
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
cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkx
Li5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0
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
ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYyYTI2
ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1J
ZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZN
b3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChw
YXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBi
ZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0
MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZv
bnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlv
biwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNy
ZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2Jh
YWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1X
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4
OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMx
OTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZE
b2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4
OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYy
ZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3Ry
dWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3Qg
Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQn
cy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZh
cmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0
IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2Fs
IGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQx
Nl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZi
MDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNm
MzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5U
eXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBV
U0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIz
NjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElE
OwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBj
aDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkg
PDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
CiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
OyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90
Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292
ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
IHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBn
bHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292
ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2Yjdl
ZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2NjNjM5ZjY0
NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8v
IGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMg
dGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUg
c2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9
IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2OSw3ICsy
NjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZv
bnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRl
bkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRpZ3VvdXMo
KSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAog
ICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5
YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3Nzc5ODM5
NGFmYTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAt
MzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNo
b3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBj
bGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9Owog
Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVj
dG9yPHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0
OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVj
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
NjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5ZjczZDBl
MzE5ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIsMTAgKzEx
MiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291cmNlID0g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJl
c291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpD
cmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24sIGZv
bnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRlbUluQ29s
bGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRvIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdURk1vdmUo
Y3JlYXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZvbnREZXNj
cmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0
YShidWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShj
b250aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0ZDA5NjIw
MDU2OTE2NmQ3NTE5NjM4OTJjODg5ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzks
MTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
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
cmluZ107CiAgICAgfQogCkBAIC00ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJblJU
RkZvcm1hdCkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250
ZW50LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKilrVVRUeXBlUlRGXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAgIGlmICgh
Y29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0RhdGEgKmh0
bWxBc0RhdGEgPSBbKE5TU3RyaW5nICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3Jp
Z2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAt
NTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJv
YXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6
ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRh
W2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlP
ck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUo
dXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFn
ZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpw
YXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBA
IC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNU
RUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBp
ZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBh
c3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92
aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwog
CiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4o
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ug
c3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBo
ZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8v
IFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHBy
aW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8v
IGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVu
ZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcg
Kzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0Zv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwg
MCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJk
SXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5n
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1
N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdy
YXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVX
aXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAg
LTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1J
bmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJh
dGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAot
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3Ry
aW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICBy
ZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUs
IHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGlu
Z1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0
cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIx
NGI4ZGEuLjNiMjhiYmQxMDI1MGFhY2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMTYs
MjMgKzExNiwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRv
IHdlYkFyY2hpdmVUeXBlID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBwbGUg
V2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNo
aXZlVHlwZS5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJ
blJURkRGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250
ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFz
dGVib2FyZFR5cGVSVEZEXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndl
YkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBpZiAod2Vi
Q29udGVudC0+ZGF0YUluUlRGRm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAgICAg
ICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQg
Zm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+
ZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2Vi
Q29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2Fy
ZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBl
c1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29u
dGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNb
aV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwog
ICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsK
LSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNm
NzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwx
MiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNd
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0
YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5
cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAg
ICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAg
IGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYs
NyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFz
dGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJP
T0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAg
Qk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBh
c3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0
cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRU
eXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7
CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewog
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFz
dGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0
YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsK
ICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
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
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5
MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25n
U2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAg
ICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
aW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNk
MWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBz
byBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRl
bnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAg
ICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3Np
bmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQog
CkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3ND
b250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwg
bGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8g
dGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgp
LCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRh
dGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAs
IGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBj
aGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwg
Ym91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0g
U3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2
MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZi
OTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6
OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9p
ZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdl
MDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBD
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2Vp
dmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVE
YXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGln
dW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRy
aWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5j
NDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAg
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkp
Ci0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
ZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAg
ZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNj
ZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkK
KyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRs
ZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVu
LCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAo
IXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2
NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi44OWNmZDcyZGE4OGI1MzJhMTRiZDBmNzkz
ZWQ3OTgxNzQ4YjcxNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBE
V09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0
ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RF
cnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwog
ICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRl
eCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNk
ZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRv
IGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmlu
ZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMo
U3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUo
KSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxs
YmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlk
IikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0g
U3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXpl
KCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5n
KCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
aW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFiMzli
OWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZv
aWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsK
LSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmco
KSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAg
ICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3Vz
RGF0YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAg
IGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJv
ck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0
ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQg
cHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hS
ZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAg
ICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAg
ICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0
YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsm
XSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZp
bmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
aW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZj
ZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAt
MTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0
byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZp
bGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1
ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
c2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVz
ZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6
Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
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
b2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2Yzgu
LmI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1
aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgp
KQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNy
ZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhl
MmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1
dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBw
ZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
aXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0
YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQg
Q2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24s
IGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNl
Qm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAg
ICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkg
PSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0
ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9u
YWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92
ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXpl
KCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7
CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMy
NmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2
NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBT
dG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAg
ICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAg
ICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZm
ZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAg
ICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5
ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZm
ZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1
cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVl
MzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4
MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJi
YzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUx
ZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9
IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9
CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQo
YnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3
YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29u
c3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9
IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhf
dCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90
ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4u
NzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNp
Z25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBw
cml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJm
OTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVz
b3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxl
YXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2Jh
MjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBz
byB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQu
Ci0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUo
KS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
ZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIw
ODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVs
ZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZhOWQ0
MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDcz
NTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CkBAIC01NSw0OSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotI2lmIFVTRShDRikKLXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxv
Y2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkg
cmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCi19Ci0gICAgCi1z
dGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURl
YWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBDRkFsbG9jYXRv
ckNvbnRleHQgY29udGV4dCA9IHsgMCwKLSAgICAgICAgcmVzb3VyY2UsCi0gICAgICAgIE5VTEws
IC8vIHJldGFpbgotICAgICAgICBOVUxMLCAvLyByZWxlYXNlCi0gICAgICAgIE5VTEwsIC8vIGNv
cHlEZXNjcmlwdGlvbgotICAgICAgICBOVUxMLCAvLyBhbGxvY2F0ZQotICAgICAgICBOVUxMLCAv
LyByZWFsbG9jYXRlCi0gICAgICAgIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSwKLSAgICAg
ICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQotICAgIH07Ci0KLSAgICByZXR1cm4gYWRvcHRDRihD
RkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwotfQotI2Vu
ZGlmCi0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIoKQotewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNoYXJl
ZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQotI2lmIFVTRShDRikKLSAgICBhdXRvIGRlYWxsb2Nh
dG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBhdXRv
IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0
b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgp
KTsKLSNlbGlmIFVTRShHTElCKQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1Jl
ZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0
YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5kZXJl
ZigpOwotICAgIH0sIHRoaXMpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0
ZXMuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLSNlbmRpZgorICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9
XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhp
cyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQorICAgIH0pOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRo
aXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBAQCBTaGFyZWFibGVS
ZXNvdXJjZTo6U2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1v
cnksIHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3Vy
Y2UoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpID0gZGVm
YXVsdDsKIAogYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFu
ZGxlKQogewpAQCAtMTYyLDcgKzEyNiw3IEBAIHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNlOjpz
aXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaXplOwogfQotICAgIAorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5ZGUz
MmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0
ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAg
LTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1jbGFzcyBTaGFyZWFibGVSZXNvdXJj
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CitjbGFzcyBTaGFyZWFi
bGVSZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJj
ZT4gewogcHVibGljOgogCiAgICAgY2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5k
bGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsMTIgKzgw
LDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVm
PFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIAotICAgIHVuc2ln
bmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fc2l6ZTsgICAgCisgICAgY29uc3QgdW5zaWdu
ZWQgbV9vZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaXplOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCBjMGI2ZWYzZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2JkMTliYjY0ZDdiLi4x
NTVkZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2NmNjkzZDZkYWI0MjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBk
ZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxT
aGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkp
CkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmIChz
aGFyZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1ZmZlclNpemUpOwor
ICAgIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZl
clNpemUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2
b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAg
IGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEo
RGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAg
KzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9
PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXpl
OyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFw
cGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRl
UmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7
CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9u
c2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
ICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkp
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIp
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkg
fTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpA
QCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRp
b25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNv
ZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3Qg
U2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBAIC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNj
NWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3
IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFz
cyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2Rl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmlu
ZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNm
NzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQg
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5
MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNh
YjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVy
OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCAr
ODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0Vu
Y2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsg
fQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xv
c2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Cisg
ICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAz
Yzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2
ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24p
OwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rp
b24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4p
PiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkx
ZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHko
KSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVy
YXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBl
cigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAg
IGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRE
YXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjli
MmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClf
c3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0
CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQu
dmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxp
Z2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdo
dCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0Omhp
Z2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJl
cXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxm
IHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0
LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyBy
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09
IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJi
ZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
CkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFy
ZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsK
ICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsK
ICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFzdGVi
b2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1
NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAt
Mjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdl
LT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAg
c2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00
NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJp
ZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApA
QCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFw
cGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3Vs
dChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAog
ICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZv
clR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAg
ICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2Fy
ZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUx
NjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJl
dEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVu
dFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlv
bihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2Vi
S2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3
ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tl
bik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIo
KTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5
ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNlNDhi
YmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5
cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAK
ICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDU2MDczYmI4
Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4
MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dE
YXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4
ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0
NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAg
ICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBu
aWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5
ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYz
NDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBl
cmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgog
CiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRh
IGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAg
ICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcg
QEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9y
aWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAg
LTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29y
ZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVO
YW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdF
Ql9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNy
ZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAg
c2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRh
LmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9z
aG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5k
aW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZmZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2
YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBX
ZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
YXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGltYWdlSGFu
ZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihp
bWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVm
ZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogICAgIHBhZ2VD
bGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmQzMzM4
NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYwYS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJj
MzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94
eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDAsNyAr
MjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlw
Y0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5
OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgYXV0
byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLmhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRN
ZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFy
ZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsK
IAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwo
KSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1h
cChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1
ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFu
ZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNsaWVudCgpLnNldFByb21pc2VkRGF0YUZv
ckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpLCBleHRlbnNpb24s
IHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUoYXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklk
ZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIu
LjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVz
Owogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRl
VG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdy
aXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBw
ZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFn
bWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJl
ODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEz
MDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0
LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250
cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3
cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dl
YlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAg
YXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBf
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFz
dGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7
CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAg
ICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFw
cGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0
eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAx
NTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMx
MDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBt
X2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVI
YW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAg
ICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5k
KHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+
ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVt
LT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNj
Njc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0
MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdl
U2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFs
OwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdl
JikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRp
b24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdj
MTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNl
U2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8v
IEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVm
UHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hh
cmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNo
YXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGll
bnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQ
SShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1l
LmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJ
KHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5
MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcg
KzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYw
YjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVz
b3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5
NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4
ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRh
dGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElL
RUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4
ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgog
ICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5n
ZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZk
MmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
ODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBy
ZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdp
c3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIw
YjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAg
ICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBt
YWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVm
ZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0NDcyZTA1NTZlLi4yOTRjMjQwNzJk
YmZlOTdkMGM2NTdiOWNmOGU2MTBjNmExYjRjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMo
cGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJy
aWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJv
YXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJv
YXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8v
IEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9h
cmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0x
NDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFuZGxl
LmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFu
ZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hh
cmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXpl
KTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUlu
Zm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICBy
ZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6
OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVt
b3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVk
TWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVk
TWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0K
IAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uZWE4OTUy
ZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRl
eCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdm
OGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgp
OwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRh
dGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAg
IGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFn
ZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZl
U2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAg
ICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45Mjli
MTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3Ry
aW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5n
KCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0Fz
U3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGRkNTljZmE3MTA2ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYuLjli
OWE5ODZjMGM5NmE4M2FjZjViODI5ZTczNjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBW
ZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdl
KCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRs
ZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xs
VG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2Uo
KS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFy
ZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxp
Z2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
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
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWJkNWQ1
MzgyMDU1YzkyNzE5NTc5NjdlNWZiZmJlMjYyYWU4ZjZjNC4uNzNhOTYyYmQ0OTRlOWQxZDFkMzU0
YzVkNzlmNWRiODI5MGYxYzQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTExLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBvbGQgY29uY3VycmVudCBkaXNwbGF5IGxpc3QgbG9naWMgdGhh
dCdzIG5vIGxvbmdlciBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggMzY5Mjk3MmRlYWE3Njk0YTFiNmMxZmZm
ZTQxOGU1ZmE0NzE1MjY0Yy4uYTExNWQ0YmUxZmJiNjNmZTU4ZjU5MjFhNGUxNTk5MzllZjdiNmMz
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTQwLDM4ICs0MCwzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAg
QVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgp
ID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RS
VUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVD
VF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgp
ID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFy
KCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgwLDEyICs4MCwxMyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNC
dWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91
c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1Niw3ICsxNTcsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVm
ZmVyLT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVm
ZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzIs
MzAgKzE3MywzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAn
YicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywg
J2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAg
ICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMx
KSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8g
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1
ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBh
dXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgp
LCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVj
a0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5k
YXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwg
a2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+
c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwg
Z2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdo
Mi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0
cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAg
LTIwNywxNSArMjExLDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAg
ICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZl
cjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAn
YicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0p
LmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5n
ZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3
MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpA
QCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJy
YXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="470140"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445005</attachid>
            <date>2021-11-22 23:04:02 -0800</date>
            <delta_ts>2021-11-23 00:05:03 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123180400.patch</filename>
            <type>text/plain</type>
            <size>385738</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uZmUx
YzIwNTFjMmY5MmRiNDk3Yzg2YTc3Y2MzZjAyOGVkODNiNTI4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBEYXRhU2VnbWVudDsgLy8gVG8g
a2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBz
aXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjEwLDk4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAx
PjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAg
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGlt
ZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBn
ZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAK
LSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNv
b24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNv
bnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNv
bnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAg
ICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwg
dGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIg
Y2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEo
KTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFs
c2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07
CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFs
bG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJl
bGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hh
cmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAg
ICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVu
c3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQg
d2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBh
cHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRh
QXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBw
aW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1h
cHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShD
RikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEo
KSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzExLDIx
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
ZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVm
NzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYs
NyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQg
fHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGlu
aXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1
dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBv
YmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAg
ICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0
aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRo
ZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJ
ZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3
YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5
MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzks
OSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIg
PDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29k
ZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1
YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNi
NmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAg
bV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2Vy
dChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAg
ICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3Zh
cmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYy
ZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
dXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5
ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2Qw
NmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50
Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyAr
MjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIm
IG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUo
cmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsK
ICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShy
ZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0K
IAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQz
ZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4g
ZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAh
UExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZv
aWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsK
LSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
cio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0
YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291
cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3Vy
Y2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29k
ZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAg
ICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0
VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBj
b25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3
MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBp
bnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91
dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZm
ZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0
aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0
aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7
CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJl
ZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAg
Ly8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhl
IEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90
IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRl
ZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3Ig
dXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGly
ZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJH
ZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNpemUoKSwgJnBy
b3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlciht
X25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmVi
NzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEo
ZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwog
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpp
bmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNh
ZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1J
c0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBD
RkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRi
NDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1
MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
QEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNl
Z21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byog
YnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVm
Y29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVu
dCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0Yzgw
YzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1
NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApA
QCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0
YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVx
dWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEg
PSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9w
dGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjRkNzI2MzNk
Nzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7
Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNv
bnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBl
RmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9j
YXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgYnVm
ZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFj
ZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBm
NGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxl
Y3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBD
YWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwog
ICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFi
bGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAj
aWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcy
M2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdz
dE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCks
IHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNv
bnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcxNWJkYTc3
NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4NzIyMDQ3
YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0
R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7
CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAg
fQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRl
OgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3
ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2
MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
QEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
IkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEs
IHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlw
ZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkxLi5k
NTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxp
bmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBp
bml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAg
ICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0
IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9h
ZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9N
RU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5p
dERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXls
b2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERh
dGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNj
ODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3
NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsg
ZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRF
bGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNv
bnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3Iq
KikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VD
b250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNl
ckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlm
IChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNz
aCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAg
fQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQ
YXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIg
bWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJr
dXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNl
ZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUo
dW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBh
eWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQw
YWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYyYTI2ZGMz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChz
eXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3Zl
KHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXls
b2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDEx
M2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThl
MGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQ
bGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwg
d2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0
aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEw
MzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJD
T1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dF
QkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4
MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2
ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0
YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
bV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRo
RGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9
CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUy
ZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRo
VmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29y
cmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0
SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgp
IGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAg
LTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBh
cnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFy
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpB
c3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlw
ZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVj
dCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6
VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRz
WzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4K
IAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlh
bnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jk
c1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJp
YW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3Bl
blR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAg
IGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlw
aEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1h
dGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhv
cml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3Ry
dWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNh
bCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGds
eXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0
aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90
KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZz
ZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25z
dGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEds
eXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNl
dCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyAr
MjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyog
bWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNm
NTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMw
N2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9u
dDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBl
TWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9w
ZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9Q
RU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0Uo
SEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUx
ZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwog
dHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMs
IGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwg
MTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAg
IGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAK
IHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAg
IHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8
IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAv
LyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAg
Y29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4o
dGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJh
Z2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0
cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9v
bCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4
KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlw
aCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2gg
KGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJh
Z2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2
ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2NjNjM5ZjY0NzJm
NzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTks
NyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFk
ZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhl
IG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6
ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBy
ZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZv
bnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2OSw3ICsyNjks
NyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4g
cmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnRE
YXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZv
bnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRpZ3VvdXMoKSwg
Zm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFj
NDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3Nzc5ODM5NGFm
YTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUs
NiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1i
b29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9y
PHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1
OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBH
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
ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5ZjczZDBlMzE5
ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIsMTAgKzExMiwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlc291
cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVh
dGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24sIGZvbnRS
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25E
YXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRlbUluQ29sbGVj
dGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRvIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdURk1vdmUoY3Jl
YXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShi
dWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnREZXNjcmlwdG9y
ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShjb250
aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1
YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAx
MGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJ
ID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJs
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQx
N2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3Zjcz
Nzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9h
dCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAog
ewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0
KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJs
ZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VS
Uk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09S
RCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCks
IHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwot
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5k
ZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0ZDA5NjIwMDU2
OTE2NmQ3NTE5NjM4OTJjODg5ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9h
cmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBh
c3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRl
bnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5j
bGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50
LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50
VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewog
ICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nl
czpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRh
OmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nl
czpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRh
OmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmlu
Z107CiAgICAgfQogCkBAIC00ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJblJURkZv
cm1hdCkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
KilrVVRUeXBlUlRGXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAgIGlmICghY29u
dGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0RhdGEgKmh0bWxB
c0RhdGEgPSBbKE5TU3RyaW5nICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1
c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2lu
KTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0
LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJk
SW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ld
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZElt
YWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1J
TUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRp
T3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURh
dGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0
ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02
MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJP
QVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAo
TlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3Rl
Ym9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAg
ICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAg
YXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAg
ICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChh
dXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRl
clJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAg
ICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rh
c2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJl
IGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNp
bmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9y
IHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNv
bnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0
aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9
KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0
Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8
fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRl
bSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
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
ZGEuLjNiMjhiYmQxMDI1MGFhY2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMTYsMjMg
KzExNiwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIHdl
YkFyY2hpdmVUeXBlID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJ
ZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBwbGUgV2Vi
IEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZl
VHlwZS5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJU
RkRGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50
LT5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVi
b2FyZFR5cGVSVEZEXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBpZiAod2ViQ29u
dGVudC0+ZGF0YUluUlRGRm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAgICAgICBp
ZiAoIXdlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0
YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
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
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDM3
MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMzZjBj
Y2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3JtRGF0
YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAg
ICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQu
ZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVS
TCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5k
ZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBm
ZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyAr
MjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRC
dWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0
cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApp
bmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1
MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNl
aXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3
ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJj
ZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9
IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2Vs
Zi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAg
ICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Np
b246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5k
ZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVj
NjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBp
Z25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQo
KSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpk
aWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAv
LyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3Npbmcu
CiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBA
IC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFz
dFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAg
ICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhl
IGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxh
c3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVj
ayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91
bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRl
OTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMx
NzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6Ondy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBD
dXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEw
Zi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVE
YXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRh
KG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91
c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNz
JiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYw
ZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVu
dHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAg
IEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdM
T0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmls
ZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmls
ZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVk
ZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAg
ICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAw
KTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRl
bXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3
MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRh
MWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAg
IERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdP
UkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1Rv
UmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZp
bGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBi
eXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2Yg
ZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBH
ZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2Nk
NjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBi
b29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxp
dCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVy
LT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9u
c2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBj
ZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmll
dyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVT
dHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyAr
MzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5k
YXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rv
ci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0
ZDRiZDQ1Li5hNGUwYWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03
OCwxMSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5n
KSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAg
ICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNE
YXRhOworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAg
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
Y29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZm
M2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDky
MmYzMmYzMmUyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
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
JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
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
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFl
NWFiZDg0MTg0YzYzMzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAg
IGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMx
NjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEy
YTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAg
ICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAg
ICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3
YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQw
OWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBA
IFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiBy
ZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hP
bihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAg
fSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9
LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjcz
LDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VC
b2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwg
c3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9y
YWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1
MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0x
MDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIu
YnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAg
ICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYg
KG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9Owor
ICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7
IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
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
YWVjYmQxOWJiNjRkN2IuLjE1NWRlNzgyMWRmYmZmMzQyOTIyNmEzZTgzY2Y2OTNkNmRhYjQyOTMg
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
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSwx
MyArMzAzMSwyMyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwor
fQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiBz
dGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNv
dXJjZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAgLTMwOTUsNyArMzEw
NSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVy
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+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMx
YTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsx
MDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2
YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcu
LjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0
YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTll
ZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4
NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0
YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFt
X2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9
IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJp
YWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24s
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0
NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1
OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGln
aGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQg
PSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0
TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5o
aWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxp
Z2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5O
ZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43
MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEy
MzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVn
YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRl
eCAxNzQ3MGM2MmM3MjBkZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3Li5iYmVmNjY3MzUxYTBh
MmJmNThkZmFmNWE3MjEwMDA2YTMxOGVhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNDE5LDcg
KzQxOSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlw
Y0hhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1
ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiAgICAgICAgIGF1
dG8gbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNl
dEJ1ZmZlckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGRp
ZE1vZGlmeUNvbnRlbnRzT2ZQYXN0ZWJvYXJkKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBw
cmV2aW91c0NoYW5nZUNvdW50LCBuZXdDaGFuZ2VDb3VudCk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG5ld0NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzky
Y2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3
Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00
NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRV
UkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0
ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
Om5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAx
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdl
LT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEg
KilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyAr
NDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
ZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJ
bW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEg
KmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBp
ZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVy
LmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+
Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJh
bCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3
MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9j
dXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRl
bnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
M2JiNmQ1ZGQxMGNiNjM1M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3Li44ODgyN2ViMjkxMmE1MzRl
OTI1YmI1ZmE4Zjk2MjNhZWMzYTEzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJv
b2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9p
ZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJh
ZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFi
YjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYg
KGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1f
c3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRh
KSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNh
N2NiMGZmM2QuLjY1ZTVkODJhMzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
Rm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBO
U0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkg
aW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAg
aWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZl
ci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBC
T09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBv
cmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1
NjUsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5H
KCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBh
IHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5m
aWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFn
ZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsg
eyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1h
Z2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hl
ZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9W
aWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5ZDdi
MDk4MWFhN2QzZmNkOWJkZTkwZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZiOWUwNmJmOGRkYWY1NWFh
MDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5
OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9M
aWJyYXJ5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZQogICAgIGlm
ICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFy
ZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUu
ZGF0YVNpemUpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKICAgICBwYWdlQ2xpZW50KCkuc2F2
ZUltYWdlVG9MaWJyYXJ5KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQy
N2QzZmU4NWQ4NWU1M2E0ZWQ5Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJi
OTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0
YVNpemUpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVj
dGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yNzUs
MTUgKzI3NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIGF1dG8gc2hhcmVkTWVt
b3J5SW1hZ2UgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1h
Z2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KHNoYXJlZE1lbW9yeUltYWdlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlt
YWdlSGFuZGxlLmRhdGFTaXplKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1
ZmZlcjsKLQogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAg
ICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhh
bmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAg
ICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oc2hhcmVkTWVtb3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBzaGFy
ZWRNZW1vcnlBcmNoaXZlLT5jcmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2ZUhhbmRsZS5kYXRhU2l6
ZSk7CiAgICAgfQogICAgIHBhZ2VDbGllbnQoKS5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0
ZWJvYXJkTmFtZSwgV1RGTW92ZShpbWFnZUJ1ZmZlciksIFJlc291cmNlUmVzcG9uc2VCYXNlOjpz
YW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJs
LCB2aXNpYmxlVVJMLCBXVEZNb3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmlnaW5JZGVudGlmaWVyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApp
bmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcx
OWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9k
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2Fy
ZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVi
b2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0
ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFj
MjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNh
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBA
QCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0
aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2Vk
aXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJL
aXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyAr
NjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1
Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5
VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAg
ICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFz
dGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5
cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAg
ICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRl
OGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1
LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAg
ICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0Fy
cmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJp
bmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZU
eXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwg
aXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZl
MGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihX
ZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwog
ICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZy
YWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlz
TW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0Njhj
Li5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZl
cih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBi
eSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQq
PihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcy
LDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRh
dGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXIt
PnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygo
Y29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIs
IGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2Fk
RGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQo
KSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0
b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThm
Mzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2
b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6
Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIu
LmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwK
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRs
ZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNh
YWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIy
MGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29y
a1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdl
J3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVy
Y2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkp
KSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
ZWFiNzZiNjJiNGY4MzZjODU4MjIxZmVhNDQ3MmUwNTU2ZS4uMjk0YzI0MDcyZGJmZTk3ZDBjNjU3
YjljZjhlNjEwYzZhMWI0YzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
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
NDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJk
VHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNI
YW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+
ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIFVSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUy
ODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLmVhODk1MmRiNTkxN2Y0MTdm
YjY1YTMxOGNmMzdlYzVlZWFhZGJhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQg
Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTg5
LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
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
bnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkZDU5Y2ZhNzEwNmYwODQ0MmUzZmIzOTkzYjFhODgwODgxZjdiYTM2Li45YjlhOTg2YzBjOTZh
ODNhY2Y1YjgyOWU3MzYzOTA3MTc1NWM2YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzczNSw3ICs3NzM1LDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJl
ZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVB
bmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUp
LCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0
OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KHNoYXJlZE1lbW9yeS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlw
Y0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDog
U2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
ZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5
YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6
OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4
ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRk
ZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURf
UEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRF
Uk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4
IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAw
NTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5T
RGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBk
YXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFn
ZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
TlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2
MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4
ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFs
OwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1
ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4
NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
QEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBp
bXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8g
Tm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5
Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50
aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXgg
ZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUw
NmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBp
bnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRl
eCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2Jl
OGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNE
YXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPily
ZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdh
ODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2
ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChb
c2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hh
cmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9j
dW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRB
cmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJz
ZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5h
dXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJi
YjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQx
LDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0
ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSku
Z2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0K
IAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEy
MTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThl
ZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhD
b2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRl
LT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisg
ICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5T
U3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9
IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlm
IChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAg
ICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29k
aW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNv
dXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0
YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRF
bmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVl
CiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAg
U2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2Rpbmcu
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEt
PmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNv
cmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBj
b3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiZDVkNTM4MjA1NWM5Mjcx
OTU3OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2MmJkNDk0ZTlkMWQxZDM1NGM1ZDc5ZjVkYjgy
OTBmMWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAy
MS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25n
ZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcx
NTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5ZWY3YjZjMzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxM
KGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVt
cHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVy
LT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5z
aXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVY
UEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiArODAsMTMgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdG
aWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCks
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgn
YScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+
c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTcyLDMwICsxNzMsMzMg
QEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdk
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0
byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAg
YXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEo
KTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
MTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsK
LSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5k
YXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamts
LnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwg
ImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFi
Y2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXpl
KCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAi
Z2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAg
Y2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMDcsMTUgKzIx
MSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7
CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywg
J2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsK
IAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7Cisg
ICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQo
KSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2Mn
IH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRl
eCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYx
MGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYy
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
KyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445008</attachid>
            <date>2021-11-23 00:05:11 -0800</date>
            <delta_ts>2021-11-23 00:38:39 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123190509.patch</filename>
            <type>text/plain</type>
            <size>393401</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uODg4
ZGI1Nzc0MjYyMWJmMWUwMmM0ZGE2NDUzODQ4Y2Q4ODNlYzRlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjEwLDk4IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQo
KTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtl
IE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNF
KENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9p
ZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21i
aW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0
b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4g
dGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NF
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
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JU
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwy
MSArMzExLDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAg
IHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
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
Li5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91
bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZv
dW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0
X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0
YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
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
ZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYz
YTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7
CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtl
eUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUs
NyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlz
IGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8g
ImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBh
cnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250
YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
KyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQg
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
YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0
YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVk
MzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
IE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRm
b3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFs
bGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitS
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwg
eyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5k
ZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQx
ZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5
Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03
NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8g
VGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGlu
c3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0
cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAg
ICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNi
YTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUx
NjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2Rl
bDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJs
KSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJs
KFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmlu
ZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZh
NjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9k
ZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmlu
ZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBl
bmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVs
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1p
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlw
ZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBi
MzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3
ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRp
YyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJv
b2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8
PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVv
Zih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUlu
dDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQx
Nl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5z
aXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+
JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNp
Z25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wg
Y29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwog
CkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0g
dG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcg
QEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAo
Y29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0
ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAz
ZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJl
ZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBm
aWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2Zm
IGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBs
ZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJu
cyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVj
dG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYg
ZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBX
T0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1
ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0
ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVk
LXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5
NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBK
U09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERh
dGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAg
ICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxz
ZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAg
ICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRh
dGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2
NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXRE
YXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFs
aXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3Ry
aW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAg
IH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNz
aW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwog
ICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29u
dGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6
ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBb
cmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
ICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7
Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhN
RShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBp
dCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4K
QEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25J
ZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2Vk
S2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAg
ICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJ
ZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgp
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTEx
NTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcg
KzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRy
eSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJl
cXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRh
LnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRy
eS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQo
KS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09O
LT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEy
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3Qg
OiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVz
dChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAo
YXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNj
MTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICsz
MDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhb
W1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxl
Z2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVz
QXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsK
IAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJm
OWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2Fz
UmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFtt
X3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1E
YXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJh
OTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVl
MjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBA
IC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJl
bnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVy
OjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jh
c2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxS
ZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
OwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1
ZTJkMDRiZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlS
ZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBv
c2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBj
b3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBz
aXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlv
biA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJ
bWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
SGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdl
U291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewog
ICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGlu
dDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhl
IE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQg
dG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBT
aGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0
IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9v
a2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0
KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVm
KCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVy
IHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8v
IGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5k
IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJl
bWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVBy
b3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFj
a3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQ
cm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIz
YzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFh
MzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44
NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5k
ZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNl
OWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBG
cmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAg
ICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxE
YXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3
OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIz
ZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZv
bnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMu
LjRkNzI2MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVl
VHlwZUZhY2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwg
JmZyZWVUeXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZy
ZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIu
LmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAm
JiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFu
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQu
Z2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRG
YWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJy
b3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0
YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
eyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZh
aWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2
MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFj
ZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5
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
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNl
NTUyYjkxLi5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3
ICszNjQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0
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
NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFm
ZjYyYTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcm
IHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9z
eXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRl
ZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5l
ZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
MjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2Nj
NjM5ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgp
CiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3
cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRh
U2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2
OSw3ICsyNjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3Jp
dHRlbkZvbnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJl
d3JpdHRlbkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRp
Z3VvdXMoKSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmlu
ZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3
Nzc5ODM5NGFmYTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5k
aWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVm
aXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01
NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7
CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJi
MzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRh
YmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90
PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBi
dWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAg
ICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRh
YmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6
Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMg
dGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93Lgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6Vmhl
YVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJs
ZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0
ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNv
bnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxP
cGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3Vi
LT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVm
ZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1
ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5
ZjczZDBlMzE5ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIs
MTAgKzExMiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICgh
Zm9udFJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1E
YXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRl
bUluQ29sbGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdU
Rk1vdmUoY3JlYXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JG
cm9tRGF0YShidWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9t
RGF0YShjb250aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1
NzA4Nzk4Yjk5ZGFhMi4uZGQ2ZWE2NTE0Zjc5MTFjZjM1OGEzOWZiNDhmNTdmMTBmMWQwNGI2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAg
ICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBp
bnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhLmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNE
YXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAg
ICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNv
ZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFh
OGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li43ZjRkMDk2MjAwNTY5MTY2ZDc1MTk2Mzg5MmM4ODlkZDUy
NDc3OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZl
Y3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNE
YXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250
ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAo
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2
ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
IH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTQ4OCw3
ICs0ODgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGREZvcm1h
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJU
RkRdOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQotICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9y
bWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKWtVVFR5cGVSVEZdOwogCiAgICAgaWYgKCFjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIE5TRGF0YSAqaHRtbEFzRGF0YSA9IFsoTlNTdHJpbmcgKilj
b250ZW50LmRhdGFJbkhUTUxGb3JtYXQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwpAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
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
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
ZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uM2IyOGJiZDEwMjUwYWFjYzMz
YjVkYWMwZjFkYmJjZDhiNWU1MWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTExNiwyMyArMTE2LDIzIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZVR5cGUgPSBicmlkZ2Vf
Y2FzdChhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFn
Q2xhc3NOU1Bib2FyZFR5cGUsIENGU1RSKCJBcHBsZSBXZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5
cGUiKSwgbnVsbHB0cikpKTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJB
cmNoaXZlVHlwZS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKICAgICAgICAg
fQogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdCkKLSAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOworICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1h
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlUlRGRF07CiAgICAgICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQp
Ci0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5S
VEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJU
Rl07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRh
SW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUlu
SFRNTEZvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJp
bmc6d2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVI
VE1MXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQuaXNOdWxs
KCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRh
dGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3Jp
Z2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmco
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAg
IHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIw
OTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5
ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25z
dApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlz
dEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdp
bigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRl
cmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUp
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0
YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNl
cmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICgh
ZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQo
KTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1v
ZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVy
biB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQs
NyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRv
cHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNE
YXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVi
b2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcg
PSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2
ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29u
c3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxh
dHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0
ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQz
OTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1
NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAg
IHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFt
ID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGEx
NDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
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
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3
YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkw
YmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6
ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7
CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9w
Q29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAg
IC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0
dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBp
ZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVG
aWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4s
IDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3Vj
Y2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRs
ZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFj
Zjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcg
KzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBH
ZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0
RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQg
Ynl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVh
ZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3Io
KSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDEx
ZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAw
MDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVB
bGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZm
ZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmlu
ZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEs
NyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwor
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2so
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8g
U3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5z
cGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52
YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZm
NjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFh
ZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nl
c3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9u
c2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RG
Ojpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAg
IGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsK
LSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2go
KTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4
IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFm
OGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3
ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZv
aWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6
ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlw
dFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxl
TWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFy
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQy
NmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEz
MTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RB
bGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIx
ZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25z
dCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAy
N2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQy
OGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVD
b2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7Cisg
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIs
IGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4
OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhf
dD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUo
bWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdk
Li45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNp
emUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+
ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIu
LmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hl
OjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25z
dAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHks
IFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJl
Y29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVz
dWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsK
KyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAg
ICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFh
OTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdh
YTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFn
ZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0
YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERh
dGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAg
bV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdl
dCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsg
bV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAx
ZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhl
NTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApA
QCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZh
dWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4u
YjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXpl
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVk
VGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2Yjcz
Y2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQg
c3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1
ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdl
YkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4u
MzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhl
IHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNp
emUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFs
dWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUx
M2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1
ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlm
OTZiYTM4ZmJlNTEyNTU2ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRj
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsNDkgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLSNpZiBVU0UoQ0YpCi1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUo
dm9pZCAqcHRyLCB2b2lkICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0
PFNoYXJlYWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigp
IGluIGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGlj
IFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9j
YXRvcihTaGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250
ZXh0IGNvbnRleHQgPSB7IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyBy
ZXRhaW4KLSAgICAgICAgTlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVz
Y3JpcHRpb24KLSAgICAgICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVh
bGxvY2F0ZQotICAgICAgICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5V
TEwsIC8vIHByZWZlcnJlZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxv
Y2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgot
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKCkKLXsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZm
ZXIgaXMgZGVhbGxvY2F0ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9
IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdl
dCgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0j
ZWxpZiBVU0UoR0xJQikKLSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19i
eXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsK
LSAgICB9LCB0aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdl
dCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci0jZW5kaWYKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFy
ZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsK
ICAgICBpZiAoIXJlc291cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3Vy
Y2U6OlNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1
bnNpZ25lZAogewogfQogCi1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkK
LXsKLX0KK1NoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7
CiAKIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkK
IHsKQEAgLTE2Miw3ICsxMjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMz
YTU0NzA1MTYwYWE0ZjdjNmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0
MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywx
MiArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVz
b3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsK
IHB1YmxpYzoKIAogICAgIGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7
CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFy
ZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwog
CiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBt
X29mZnNldDsKLSAgICB1bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1f
b2Zmc2V0OworICAgIGNvbnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uMTU1ZGU3
ODIxZGZiZmYzNDI5MjI2YTNlODNjZjY5M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFy
ZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2Rl
ciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAx
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAt
MjM0LDEzICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVk
TWVtb3J5QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBi
dWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXpl
KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBl
bmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNv
ZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVz
QW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBl
c0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEs
MTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlw
ZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsr
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQo
YnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3Bv
bnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0g
ICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9k
eSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVj
b3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBA
IC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMw
MTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDEzICszMDMxLDIzIEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlw
dEJ1ZmZlciYgc2NyaXB0KQogewpAQCAtMzA5NSw3ICszMTA1LDcgQEAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
Pjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4u
ZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2Vy
dGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBj
bGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBi
MzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAx
YjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2Yw
OTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0
YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9C
SkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAg
ICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJ
bWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0
MTkyZjE5YWExYzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5
ZDEzNTA0NTk4Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAg
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEm
IGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0K
LXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQor
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1
bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRl
MTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29u
c3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsK
IApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAo
IXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0
N2MwNzZlY2RjNWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4
MjEyOWE2MDEzOGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3Jl
QXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAg
IGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVl
KCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBh
bGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBh
ZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGln
aHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0
OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9y
ZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05l
d0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJD
b3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJj
ODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3
NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJW
aWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5j
cmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5
MTViN2IzYjU4MjAyM2ViNTFlYzcuLmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4
ZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIu
cHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3Rl
Ym9hcmQoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5l
d0NoYW5nZUNvdW50KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAz
ZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNh
ZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBO
U0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86
V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkg
Zm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4
OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmpl
Y3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8g
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RB
dEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFn
ZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRl
bnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFy
Y2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
Ojpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0
cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21p
c2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBm
b3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2Vi
Vmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwg
KmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJv
bWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRh
LmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNl
ZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsK
QEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFj
Y2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxl
RE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
OjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQu
Z2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9y
aWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBh
c3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlv
bihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYw
NjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZm
MzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGlj
eSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9y
c1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
RHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkz
NThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzEx
NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAg
dm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2
YmQxLi5mOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAg
ICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAg
ICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
bV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMu
LmU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYs
IGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpp
bmRleCAzMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThj
ODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1h
dGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VC
dWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9z
QWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdi
Y2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcg
KzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9u
IHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3Rl
Ym9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAg
ICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBm
b2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAg
ICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1P
cmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAg
ICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAg
ICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUsNyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVF
bGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURh
dGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZh
dWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8g
ZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGlt
YWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7
IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDQ2NzlkN2IwOTgxYWE3ZDNmY2Q5YmRlOTBlZDZm
ZjJhYzIzMmVlMTUuLmJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAt
MTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTg4LDcgKzU4OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGltYWdlSGFuZGxlCiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgIGF1dG8g
YnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5k
bGUuZGF0YVNpemUpOwogICAgIHBhZ2VDbGllbnQoKS5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92
ZShidWZmZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYw
YS4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRs
ZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgcmV0dXJuIHNo
YXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7
CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI3NSwxNSArMjc1LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTCiAgICAgYXV0byBzaGFyZWRNZW1vcnlJbWFnZSA9IFNoYXJlZE1lbW9y
eTo6bWFwKGltYWdlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlJbWFnZSkKICAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1h
Z2UtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwotCiAgICAgaWYgKCFhcmNo
aXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFy
Y2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJj
aGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlB
cmNoaXZlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGFyY2hpdmVIYW5kbGUuZGF0YVNp
emUpKTsKKyAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUFyY2hpdmUtPmNyZWF0
ZVNoYXJlZEJ1ZmZlcihhcmNoaXZlSGFuZGxlLmRhdGFTaXplKTsKICAgICB9CiAgICAgcGFnZUNs
aWVudCgpLnNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBXVEZNb3ZlKGlt
YWdlQnVmZmVyKSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5h
bWUoZmlsZW5hbWUpLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUo
YXJjaGl2ZUJ1ZmZlciksIG9yaWdpbklkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJk
ZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJm
OWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdl
JiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdl
JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4
ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdE
ZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0Rl
bGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxs
V3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisg
ICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRF
ZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVk
aXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+
X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktp
dDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmlu
ZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVz
LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0
ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdl
JiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9B
UEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRy
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAg
ICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3Ig
KGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAg
ICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5k
ZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0
ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZp
bmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3Jl
OjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0
YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2
N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
UmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAg
ICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4o
ZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hh
cmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilz
aGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+
cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIo
KSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1w
bCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJM
LnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1
MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNj
MGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxl
UGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFj
ZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdhMjliYzJh
NjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUs
NyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBp
ZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4Yjdm
Zi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVy
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29k
ZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFj
ZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0
YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsK
ICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1
OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2
MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUz
MjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODks
NyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURh
dGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAg
ICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExv
YWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFm
ZWE0NDcyZTA1NTZlLi4yOTRjMjQwNzJkYmZlOTdkMGM2NTdiOWNmOGU2MTBjNmExYjRjN2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVz
OjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRl
KHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3Zl
cnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJv
Y2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYKICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5k
bGUuZGF0YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRC
dWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwg
cGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcg
KzQxNCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0
YVNpemUpOworICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIo
aXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQx
YTY4NTMxYWI3MzIxNGZiMC4uZWE4OTUyZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhk
YmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJl
c3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1h
Z2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFu
ZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAg
ICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwog
ICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJl
ZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2
YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5
Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZSht
YWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
cmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3Ry
aW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRkNTljZmE3MTA2ZjA4NDQyZTNm
YjM5OTNiMWE4ODA4ODFmN2JhMzYuLjliOWE5ODZjMGM5NmE4M2FjZjViODI5ZTczNjM5MDcxNzU1
YzZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03NzM1LDcgKzc3MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3Vt
ZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRN
ZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxU
b0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1l
bnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
c2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9
PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8p
OwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4
MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVh
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAg
ICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9y
KCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRv
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYz
M2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZF
KEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9k
ZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsK
LSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAog
Ym9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dF
QktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2
ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0
aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2
NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
OjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEz
M2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2
OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0
LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5
OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjli
MjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01
NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4
N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1
NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVi
b2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIy
OTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2
Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJp
dmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4
ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0
cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJB
cmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hp
dmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFy
Y2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRl
LT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRB
cmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1Njcw
MTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0
aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVz
dWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVh
Y2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlND
b2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2Rl
cgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsK
LSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBk
YXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmls
LCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291
cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVu
Y29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAg
ICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJS
ZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5Oldl
YlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9y
S2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0
ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0y
MDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyAr
MzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBX
aW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRh
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRh
KCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNv
cmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNp
emUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYy
MTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1v
cnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0
LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFt
PiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5l
dyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0
NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1l
bW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAv
LyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0
ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291
bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAw
MTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0
MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09N
X091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5n
ZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5n
ZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92
ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJi
NDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNk
ZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVu
ZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVm
MDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3Ry
ZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAK
LSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGln
dW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpy
ZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9u
KiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
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
ZwppbmRleCAxYmQ1ZDUzODIwNTVjOTI3MTk1Nzk2N2U1ZmJmYmUyNjJhZThmNmM0Li43M2E5NjJi
ZDQ5NGU5ZDFkMWQzNTRjNWQ3OWY1ZGI4MjkwZjFjNDRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjIg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTEtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBjb25jdXJyZW50IGRpc3BsYXkg
bGlzdCBsb2dpYyB0aGF0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNjkyOTcyZGVh
YTc2OTRhMWI2YzFmZmZlNDE4ZTVmYTQ3MTUyNjRjLi5hMTE1ZDRiZTFmYmI2M2ZlNThmNTkyMWE0
ZTE1OTkzOWVmN2I2YzM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDAsMzggKzQwLDM4IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3Rpbmdf
ZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3Rpbmdf
ZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVF
KFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAg
IGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAt
ODAsMTIgKzgwLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05V
TEwoY29udGlndW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBw
ZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZm
ZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU2LDcgKzE1Nyw3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGgg
KiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xv
bmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1j
bXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgp
KTsKIH0KQEAgLTE3MiwzMCArMTczLDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsn
ZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywg
J2snLCAnbCd9OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdj
JywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcg
fTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwor
ICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZm
ZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
OCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJj
ZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRv
IGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEo
KSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5z
aXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJn
aCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVj
a0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdo
aWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihn
aGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCks
IGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdo
Mi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwg
ImwiKTsKIH0KIApAQCAtMjA3LDE1ICsyMTEsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGlzRXF1YWxUbykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkp
OwogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtl
QnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
MS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7
J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScg
fSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIx
ODg1ZDRlYjExMC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBd
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>
<flag name="commit-queue"
          id="470145"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445011</attachid>
            <date>2021-11-23 00:28:37 -0800</date>
            <delta_ts>2021-11-23 01:52:22 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123192834.patch</filename>
            <type>text/plain</type>
            <size>393403</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uODg4
ZGI1Nzc0MjYyMWJmMWUwMmM0ZGE2NDUzODQ4Y2Q4ODNlYzRlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjEwLDk4IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQo
KTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtl
IE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNF
KENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9p
ZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21i
aW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0
b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4g
dGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NF
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
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JU
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwy
MSArMzExLDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAg
IHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
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
Li5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91
bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZv
dW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0
X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0
YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
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
ZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYz
YTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7
CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtl
eUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUs
NyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlz
IGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8g
ImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBh
cnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250
YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
KyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQg
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
YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0
YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVk
MzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
IE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRm
b3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFs
bGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitS
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwg
eyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5k
ZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQx
ZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5
Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03
NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8g
VGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGlu
c3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0
cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAg
ICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNi
YTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUx
NjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2Rl
bDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJs
KSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJs
KFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmlu
ZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZh
NjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9k
ZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmlu
ZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBl
bmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVs
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1p
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlw
ZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBi
MzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3
ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRp
YyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJv
b2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8
PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVv
Zih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUlu
dDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQx
Nl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5z
aXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+
JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNp
Z25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wg
Y29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwog
CkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0g
dG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcg
QEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAo
Y29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0
ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAz
ZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJl
ZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBm
aWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2Zm
IGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBs
ZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJu
cyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVj
dG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYg
ZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBX
T0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1
ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0
ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVk
LXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5
NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBK
U09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERh
dGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAg
ICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxz
ZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAg
ICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRh
dGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2
NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXRE
YXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFs
aXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3Ry
aW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAg
IH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNz
aW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwog
ICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29u
dGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6
ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBb
cmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
ICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7
Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhN
RShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBp
dCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4K
QEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25J
ZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2Vk
S2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAg
ICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJ
ZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgp
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTEx
NTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcg
KzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRy
eSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJl
cXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRh
LnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRy
eS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQo
KS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09O
LT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEy
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3Qg
OiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVz
dChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAo
YXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNj
MTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICsz
MDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhb
W1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxl
Z2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVz
QXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsK
IAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJm
OWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2Fz
UmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFtt
X3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1E
YXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJh
OTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVl
MjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBA
IC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJl
bnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVy
OjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jh
c2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxS
ZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
OwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1
ZTJkMDRiZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlS
ZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBv
c2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBj
b3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBz
aXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlv
biA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJ
bWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
SGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdl
U291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewog
ICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGlu
dDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhl
IE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQg
dG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBT
aGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0
IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9v
a2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0
KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVm
KCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVy
IHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8v
IGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5k
IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJl
bWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVBy
b3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFj
a3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQ
cm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIz
YzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFh
MzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44
NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5k
ZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNl
OWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBG
cmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAg
ICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxE
YXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3
OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIz
ZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZv
bnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMu
LjRkNzI2MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVl
VHlwZUZhY2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwg
JmZyZWVUeXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZy
ZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIu
LmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAm
JiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFu
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQu
Z2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRG
YWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJy
b3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0
YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
eyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZh
aWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2
MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFj
ZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5
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
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNl
NTUyYjkxLi5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3
ICszNjQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0
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
NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFm
ZjYyYTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcm
IHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9z
eXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRl
ZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5l
ZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
MjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2Nj
NjM5ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgp
CiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3
cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRh
U2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2
OSw3ICsyNjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3Jp
dHRlbkZvbnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJl
d3JpdHRlbkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRp
Z3VvdXMoKSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmlu
ZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3
Nzc5ODM5NGFmYTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5k
aWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVm
aXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01
NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7
CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJi
MzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRh
YmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90
PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBi
dWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAg
ICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRh
YmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6
Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMg
dGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93Lgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6Vmhl
YVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJs
ZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0
ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNv
bnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxP
cGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3Vi
LT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVm
ZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1
ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5
ZjczZDBlMzE5ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIs
MTAgKzExMiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICgh
Zm9udFJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1E
YXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRl
bUluQ29sbGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdU
Rk1vdmUoY3JlYXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JG
cm9tRGF0YShidWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9t
RGF0YShjb250aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1
NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAg
ICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBp
bnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0
YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYg
KGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3Vz
RGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAg
ICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURl
Y29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRl
YWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjdmNGQwOTYyMDA1NjkxNjZkNzUxOTYzODkyYzg4OWRk
NTI0Nzc5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
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
YWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNDg4
LDcgKzQ4OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9y
bWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0
UlRGRF07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZG
b3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopa1VUVHlwZVJURl07CiAKICAgICBpZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1h
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNEYXRhICpodG1sQXNEYXRhID0gWyhOU1N0cmluZyAq
KWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ107CkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
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
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1
OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJi
ODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJ
bWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJl
dHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGlj
IFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBl
LCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBl
LCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0
ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAg
ICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkp
IHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAg
ICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAg
ICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAz
NTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi4zYjI4YmJkMTAyNTBhYWNj
MzNiNWRhYzBmMWRiYmNkOGI1ZTUxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTE2LDIzICsxMTYsMjMgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgYXV0byB3ZWJBcmNoaXZlVHlwZSA9IGJyaWRn
ZV9jYXN0KGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc05TUGJvYXJkVHlwZSwgQ0ZTVFIoIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQg
dHlwZSIpLCBudWxscHRyKSkpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50
LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndl
YkFyY2hpdmVUeXBlLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CisgICAg
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9y
bWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFz
dGVib2FyZFR5cGVSVEZEXTsKICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1h
dCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJ
blJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBl
UlRGXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRh
dGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRh
SW5IVE1MRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0
cmluZzp3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlw
ZUhUTUxdOwogICAgICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdC5pc051
bGwoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+
ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVu
dC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVz
c0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAg
UGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRP
cmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmlu
ZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAg
ICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFh
YjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2
ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VW
ZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewog
ICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0p
LmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNv
bnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBM
aXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpz
ZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3Jp
Z2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9y
ZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlw
ZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgp
KQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsy
NzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21E
YXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6
c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDog
bmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21f
cGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYg
KCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3Vu
dCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9y
TW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9h
cmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1
NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpk
YXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBh
ZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShu
c0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUs
NyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0
ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0
ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0
ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApA
QCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBj
b25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShm
bGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxh
dHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0
NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgx
YTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5
SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAK
IHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAg
ICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAg
ICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJl
YW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMx
MmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIw
YTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQog
ewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODEx
YjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQw
MTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTks
NyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Np
b24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0s
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVz
UmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVs
ZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9u
Z1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2Vp
dmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkx
OTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVm
NTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2
b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVy
bjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAK
LSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
bV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0
aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91
dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVy
LnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAg
Ym9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYg
KCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJv
dW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0
aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlz
IG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gp
KTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdh
cyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2gg
b3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5
U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3Rh
cnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5k
YXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUx
Li5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAg
LTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmls
ZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAo
bV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93
bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgx
OGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlm
ZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAg
aWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJs
Q2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZl
cigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21w
bGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVh
NzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNh
OTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZp
bGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2Jq
KTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAg
ICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdy
aXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAg
IGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0
ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRl
biwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFu
ZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThh
YWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUs
NyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9
IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExh
c3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09S
RCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNS
ZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJv
cigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAg
IH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0
MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJh
MDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1
ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3Ry
aW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3
MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0
YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7
CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFj
ayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikg
PyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6
ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3Ry
aW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkp
LnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJp
bnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFiMzliOWQ2
NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7
Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAg
ICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0
YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlm
IChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1
MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJv
Y2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNw
b25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBX
VEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAg
ICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkp
OwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlz
aCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5k
ZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJi
MWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3
LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklY
TUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBh
dm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVT
aXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2Ny
aXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZp
bGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xl
YXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpk
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
ZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLmI3
Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQot
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0
ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZl
N2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTg3LDcg
KzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXpl
KSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEy
Yi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2Fj
aGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNv
bnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9k
eSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAg
Ly8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7
IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8
UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShy
ZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkp
OworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAK
ICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEw
MWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJl
N2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9y
YWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBE
YXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAg
RGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXIt
PmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAg
ICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0g
eyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIu
Z2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4g
eyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBj
NDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4Mjgx
MDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAg
ICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEw
OGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYw
YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRl
ZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Cisg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDog
bV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVm
ZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkp
IHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0
dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQor
ICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9
CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5z
aXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1
Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QK
K1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNp
emUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAg
ICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCog
ewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0
ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZi
NzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25l
ZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2
YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hp
dmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVm
ZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3
IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNo
YXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3Vy
Y2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2
ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNl
V2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0
Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0
aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0g
ICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52
YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlh
NTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4
ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBi
eXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEu
Z2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZhOWQ0MmVj
OWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJl
NGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBA
IC01NSw0OSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotI2lmIFVTRShDRikKLXN0YXRpYyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0
ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8pCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgc3RhdGljX2Nh
c3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihpbmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVm
KCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcigpCi19Ci0gICAgCi1zdGF0
aWMgUmV0YWluUHRyPENGQWxsb2NhdG9yUmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKFNoYXJlYWJsZVJlc291cmNlKiByZXNvdXJjZSkKLXsKLSAgICBDRkFsbG9jYXRvckNv
bnRleHQgY29udGV4dCA9IHsgMCwKLSAgICAgICAgcmVzb3VyY2UsCi0gICAgICAgIE5VTEwsIC8v
IHJldGFpbgotICAgICAgICBOVUxMLCAvLyByZWxlYXNlCi0gICAgICAgIE5VTEwsIC8vIGNvcHlE
ZXNjcmlwdGlvbgotICAgICAgICBOVUxMLCAvLyBhbGxvY2F0ZQotICAgICAgICBOVUxMLCAvLyBy
ZWFsbG9jYXRlCi0gICAgICAgIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSwKLSAgICAgICAg
TlVMTCwgLy8gcHJlZmVycmVkU2l6ZQotICAgIH07Ci0KLSAgICByZXR1cm4gYWRvcHRDRihDRkFs
bG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOwotfQotI2VuZGlm
Ci0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQotewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNoYXJlZEJ1
ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQotI2lmIFVTRShDRikKLSAgICBhdXRvIGRlYWxsb2NhdG9y
ID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3Iu
Z2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsK
LSNlbGlmIFVTRShHTElCKQotICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihn
X2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0YSkg
ewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5kZXJlZigp
OwotICAgIH0sIHRoaXMpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMu
Z2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLSNlbmRpZgorICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgp
IHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9
XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQorICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNo
YXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMp
OwogICAgIGlmICghcmVzb3VyY2UpIHsKQEAgLTEzOCw5ICsxMDQsNyBAQCBTaGFyZWFibGVSZXNv
dXJjZTo6U2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnks
IHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2Uo
KQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpID0gZGVmYXVs
dDsKIAogYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxl
KQogewpAQCAtMTYyLDcgKzEyNiw3IEBAIHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNlOjpzaXpl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaXplOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5ZGUzMmQx
YzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0
ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMz
LDEyICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi1jbGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CitjbGFzcyBTaGFyZWFibGVS
ZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4g
ewogcHVibGljOgogCiAgICAgY2xhc3MgSGFuZGxlIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUm
KTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsMTIgKzgwLDEy
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNo
YXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIAotICAgIHVuc2lnbmVk
IG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fc2l6ZTsgICAgCisgICAgY29uc3QgdW5zaWduZWQg
bV9vZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaXplOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBjMGI2ZWYzZmEzYTJlMTIwNGM2NzdlY2Y4NmFlY2JkMTliYjY0ZDdiLi4xNTVk
ZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2NmNjkzZDZkYWI0MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBz
dGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNv
ZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCks
IDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBA
IC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmIChzaGFy
ZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGJ1ZmZlclNpemUpOworICAg
IGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlclNp
emUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lk
IGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVu
Y29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlw
ZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9
CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVj
b2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5
cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2
MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0
eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVu
ZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVz
cG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAK
LSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpS
ZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsK
QEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAt
MzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25h
bDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
YnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2Ny
aXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBAIC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9wdGlvbmFs
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
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
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJh
ZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2
YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3Rv
cmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAg
ICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFs
dWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0
IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9
IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hs
aWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRl
eHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0
b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0Lmlz
TmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdl
YkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4
MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdi
Njc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Pihu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dl
YlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJi
NzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEz
MThlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLAogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1
ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZl
ci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFz
dGVib2FyZChjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwg
bmV3Q2hhbmdlQ291bnQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVk
Y2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJ
bXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQs
IE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxU
bzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9i
amVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIg
PyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVj
dEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGlt
YWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4
dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAo
YXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlw
ZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5T
U3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJv
bWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVO
U0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdl
LT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpX
ZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VS
TCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9w
cm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRh
dGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21p
c2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0p
OwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5k
bGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9u
c2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2Fy
ZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0g
b3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50
UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0
aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2Zj
NjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1
NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9s
aWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0
b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVm
OTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2Ex
Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyAr
MTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAg
ICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9n
eU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBj
MTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5
LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAg
ICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9Owor
ICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNE
YXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJi
My4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2Fh
OGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9y
bWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFn
ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90
b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCBhOGU5MGU0MjlhNmVjZTEzNjg3YjlmOTFiYzczODJjYTdjYjBmZjNkLi42NWU1ZDgyYTM1
N2JjYmFhZjk1MDkwMzg1ZDJhZWRhMmVkZjM0MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEs
NyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rp
b24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFz
dGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsK
ICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09
IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAg
ICAgICB9CkBAIC02NTk0LDcgKzY1OTQsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRl
bU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAg
ICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAg
ICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU2NSw3ICs3NTY1LDcgQEAgLSAodm9pZClhY3Rp
b25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFy
ZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJl
RGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRl
ZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBu
byBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihp
bWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24o
aW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6
IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0g
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVk
NmZmMmFjMjMyZWUxNS4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRh
KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0
byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhh
bmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFnZUNsaWVudCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZN
b3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5
NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsy
MjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFu
ZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXpl
KTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFMKICAgICBhdXRvIHNoYXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVt
b3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUltYWdlKQogICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJ
bWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkp
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFy
Y2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlB
cmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9y
eUFyY2hpdmUtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRh
U2l6ZSkpOworICAgICAgICBhcmNoaXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdl
Q2xpZW50KCkuc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUo
aW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxl
bmFtZShmaWxlbmFtZSksIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92
ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2luSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1
YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFl
MmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdl
JikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFu
Z2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5k
ZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGlu
Z0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5n
RGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkg
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdp
bGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFu
Z2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwK
KyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVy
LT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2Vi
S2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3Ry
aW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlw
ZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAg
ICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAK
aW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFj
OTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0
b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxw
dHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAg
ICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZv
ciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0
ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAg
ICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApp
bmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1
ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmlu
ZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9h
cmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jikg
ZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29T
dGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNv
cmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1
MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2Ji
MjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25z
dCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNv
bnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwor
ICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQq
PihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hh
YmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChz
aGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0
YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIq
KXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJl
ZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVy
LT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
KGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91
c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0
cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZw
YWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5p
bXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVV
Ukwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXgg
ZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0
Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2Up
CiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2Zp
bGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5
MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJj
MmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3
NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNv
dXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFy
ZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAl
cyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhi
N2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsg
cHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50
ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVm
ZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5j
b2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5
YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAy
NDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmRE
YXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYw
ZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0
ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2Zi
YzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2
ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4
OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwor
ICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAg
ICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIy
MWZlYTQ0NzJlMDU1NmUuLjI5NGMyNDA3MmRiZmU5N2QwYzY1N2I5Y2Y4ZTYxMGM2YTFiNGM3ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4K
ICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJp
ZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShv
dmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBw
cm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJgogICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hh
bmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKQEAgLTQwNCw3ICs0MDYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1l
LCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CkBAIC00MTIs
NyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5k
YXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFm
NDFhNjg1MzFhYjczMjE0ZmIwLi5lYTg5NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVhYWRi
YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0t
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
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ1OWNmYTcxMDZmMDg0NDJl
M2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4uOWI5YTk4NmMwYzk2YTgzYWNmNWI4MjllNzM2MzkwNzE3
NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTc3MzUsNyArNzczNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdo
dHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAg
IGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9j
dW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGln
aHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9s
bFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1
bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdo
dChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBp
ID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpO
byk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0
YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMy
NWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQK
ICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0
b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1
dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNm
ZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhB
VkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBt
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
OwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
CiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3Rh
bmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRf
V0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0
cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
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
b24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
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
TG9nCmluZGV4IDFiZDVkNTM4MjA1NWM5MjcxOTU3OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2
MmJkNDk0ZTlkMWQxZDM1NGM1ZDc5ZjVkYjgyOTBmMWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0y
MiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxh
eSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJk
ZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIx
YTRlMTU5OTM5ZWY3YjZjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
OwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9
PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RS
VUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNv
cHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBA
IC04MCwxMiArODAsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1Rf
TlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5h
cHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1
ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXpl
KCkpOwogfQpAQCAtMTcyLDMwICsxNzMsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0g
eydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2on
LCAnaycsICdsJ307Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywg
J2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisK
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0
YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdo
LnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwg
ImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNo
ZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1
ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVm
Z2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVy
KGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZl
cihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUo
KSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwg
Z2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgp
LCAibCIpOwogfQogCkBAIC0yMDcsMTUgKzIxMSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50
KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBt
YWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8
dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2Qn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30s
IHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0g
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2En
IH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9I
ZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNm
YjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRh
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="470152"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445018</attachid>
            <date>2021-11-23 01:20:06 -0800</date>
            <delta_ts>2021-11-23 03:59:58 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123202003.patch</filename>
            <type>text/plain</type>
            <size>395374</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTFmMDRiMmIzMjYwZjZiZjg2MjIzN2ZhMjll
OTBjZDU2YzhkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCkBAIC0wLDAgKzEsMTMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKKworI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkKK3sKKyAgICAvLyBUaGUg
bmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFT
VklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisgICAgYXV0byBwYXRoVG9EaXJl
Y3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQor
eworICAgIGNyZWF0ZUZpbGUoKTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgeworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJl
N2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkx
MGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2
NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkw
OGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCAr
NDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0
MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUz
ZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENT
U1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGlu
dCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNh
Y2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVz
ZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFG
cm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8g
ZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJp
bmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJl
IG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQx
YzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMw
YzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNo
ZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAz
LDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBS
ZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwog
fQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBj
bGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdm
MTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBl
OTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5
NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcg
KzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1
MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0
YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5
ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVt
ZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4
YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5hMTA1ZTJiNGM3ZDc1NGUx
OWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hh
cmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCArOTIwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9k
YXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRh
ID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFl
YzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAog
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQ
aW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQw
MzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJl
bG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENv
bnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2
YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZi
NWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNh
MDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAg
ICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFs
c2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLmZhZGVmMDUyZWYyMzEyMmQyNjMxMjE5ZjE3MmY5Y2E5MDk1NDQ0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYu
LjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlz
aGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUg
bG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hl
bgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVT
aGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDlj
NzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3Rmls
ZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAg
ICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50Piht
X3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMu
Y2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4z
ZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91Ymxl
KGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3Ry
aW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
N2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2Nh
MTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04
MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JF
X0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJp
bmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2Fy
ZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1F
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWRO
YW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlz
dEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5
MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFk
MDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURh
dGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYm
IGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAx
OwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2
Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVm
YmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4u
YTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qg
Y2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0
YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJk
OTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEy
MWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEs
MTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBT
dHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1h
dDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMx
MDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNm
NmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
UGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRl
SW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3
ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0
YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICsz
OCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVj
dG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA0NzU0MmRh
Y2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5hZjVmOTRkYTcxYzEzZTdkZmRjMzU5
YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURh
dGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAt
NjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAg
ICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgp
IDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAg
IHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAg
IGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3Np
emUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJU
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsK
LSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3Qg
U2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCiti
b29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7
Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsg
ZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
ZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3LDIzICsxOTcsMjggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rv
ci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwog
ICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yMzcsMTcgKzIz
MiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDggKzMxMiw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytp
dCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0
CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNC
dWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1h
cHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmls
ZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QK
IHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEu
ZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0K
QEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hh
cmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAg
LTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3Np
emUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21l
bnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJp
ZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1NDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1
ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQzYThkY2Q3NzI0N2FkYTFhYi4uODg4
ZGI1Nzc0MjYyMWJmMWUwMmM0ZGE2NDUzODQ4Y2Q4ODNlYzRlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7Cisv
LyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1
c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERh
dGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBz
ZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxy
ZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQo
KSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1
bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkp
OyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidz
IGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2Vn
bWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIg
eworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEg
RGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVu
Y2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVk
QnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0g
ICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiwKKyNlbmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogI2VuZGlmCi0g
ICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAgICAgICBE
YXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAg
ICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29w
eURhdGEoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjEwLDk4IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZl
Y3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQo
KTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtl
IE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNF
KENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9p
ZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21i
aW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0
b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4g
dGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICNpZiBBU1NF
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
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JU
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwy
MSArMzExLDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0
RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1
YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAg
IHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
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
Li5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91
bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZv
dW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0
X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0
YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
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
ZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYz
YTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGlu
aXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7
CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtl
eUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUs
NyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlz
IGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8g
ImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBh
cnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250
YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
KyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQg
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
YzVlMDA5OGNiNmMwMGJmMi4uMjQ2YmIwZDUzMWE5N2UyMDVlZDU2YjlhM2ZmZDU5OGY1MDA4MjQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0
YzFmODIxMWYyZS4uYzE1ZDlmZjM1MGMyMjZiYzM1MTQyMTk0MmU1Mzg1YjdhMzFmZjllZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlnb3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVk
MzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
IE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRm
b3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFs
bGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8
Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitS
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0
YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwg
eyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5k
ZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQx
ZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5
Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03
NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8g
VGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGlu
c3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0
YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0
cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAg
ICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNi
YTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUx
NjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2Rl
bDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJs
KSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJs
KFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmlu
ZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZh
NjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9k
ZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmlu
ZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBl
bmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVs
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1p
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlw
ZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBi
MzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3
ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRp
YyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJv
b2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8
PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVv
Zih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUlu
dDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQx
Nl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5z
aXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+
JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNp
Z25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wg
Y29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVp
bnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwog
CkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0g
dG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcg
QEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAo
Y29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAg
ICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0
ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAz
ZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJl
ZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBm
aWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2Zm
IGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBs
ZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJu
cyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVj
dG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYg
ZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBX
T0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1
ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0
ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVk
LXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5
NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBK
U09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERh
dGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAg
ICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxz
ZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAg
ICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRh
dGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2
NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXRE
YXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFs
aXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3Ry
aW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAg
IH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNz
aW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwog
ICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29u
dGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6
ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhm
YWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBb
cmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAg
ICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7
Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhN
RShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBp
dCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4K
QEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25J
ZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2Vk
S2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRl
bnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAg
ICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJ
ZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgp
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTEx
NTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcg
KzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRy
eSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJl
cXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRh
LnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRy
eS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQo
KS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09O
LT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEy
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3Qg
OiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVz
dChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAo
YXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNj
MTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICsz
MDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhb
W1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxl
Z2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVz
QXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsK
IAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJm
OWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2Fz
UmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFtt
X3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1E
YXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJh
OTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVl
MjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBA
IC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJl
bnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVy
OjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jh
c2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxS
ZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
OwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1
ZTJkMDRiZWQzZDUwYzA2Li5lODQ2NDFmZjI2MmI5OTJlN2UwZGRjYmIyMzc0MzE3MmE0ODAwODM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlS
ZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBv
c2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBj
b3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBz
aXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlv
biA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJ
bWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
SGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdl
U291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewog
ICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGlu
dDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhl
IE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQg
dG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBT
aGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0
IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9v
a2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0
KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVm
KCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVy
IHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8v
IGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5k
IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJl
bWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVBy
b3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFj
a3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmNvbnRpZ3VvdXNEYXRhLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQ
cm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIz
YzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFh
MzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44
NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5k
ZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNl
OWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBG
cmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAg
ICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxE
YXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3
OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIz
ZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZv
bnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMu
LjRkNzI2MzNkNzk5YTg0MTVjYWUzOTY0OGQ3ODdmZTg0ZmRiNjE5M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVl
VHlwZUZhY2U7Ci0gICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwg
JmZyZWVUeXBlRmFjZSkpCisgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZy
ZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIu
LmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAm
JiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFu
KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQu
Z2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRG
YWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJy
b3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0
YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
eyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZh
aWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2
MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFj
ZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5
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
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlMWEyMWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNl
NTUyYjkxLi5kNTZiMTk4NTE0MjU3NmE3NWU5ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3
ICszNjQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0
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
NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFm
ZjYyYTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcm
IHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9z
eXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRl
ZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5l
ZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
MjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2Nj
NjM5ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgp
CiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3
cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRh
U2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2
OSw3ICsyNjksNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3Jp
dHRlbkZvbnREYXRhOwotICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJl
d3JpdHRlbkZvbnREYXRhKSkKKyAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRp
Z3VvdXMoKSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIERXT1JEIG51bUZvbnRzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmlu
ZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3
Nzc5ODM5NGFmYTM2Y2FmZjM2NmVmMmZhODA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5k
aWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVm
aXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01
NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7
CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJi
MzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRh
YmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90
PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBi
dWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAg
ICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRh
YmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6
Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMg
dGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93Lgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6Vmhl
YVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJs
ZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0
ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNv
bnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxP
cGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3Vi
LT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVm
ZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1
ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li5mZGE2Y2M0ZGQ4NzY1M2ExNzg3OTNhNzA5
ZjczZDBlMzE5ZjFmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTIs
MTAgKzExMiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICgh
Zm9udFJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBGb250UGxhdGZvcm1E
YXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0ZW1JbkNvbGxlY3Rp
b24sIGZvbnRSZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YSA9IHsgY29udGlndW91c0J1ZmZlci5nZXQoKSwgaXRl
bUluQ29sbGVjdGlvbiwgZm9udFJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkgfTsKICAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5hbWUsIFdU
Rk1vdmUoY3JlYXRpb25EYXRhKSk7CiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICByZXN1bHQtPmZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JG
cm9tRGF0YShidWZmZXIuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICByZXN1bHQtPmZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9t
RGF0YShjb250aWd1b3VzQnVmZmVyLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
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
LjdmNGQwOTYyMDA1NjkxNjZkNzUxOTYzODkyYzg4OWRkNTI0Nzc5YzcgMTAwNjQ0Ci0tLSBhL1Nv
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
dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAK
ICAgICBpZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
TlNEYXRhICpodG1sQXNEYXRhID0gWyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluSFRNTEZvcm1h
dCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CkBAIC01MDEsNyArNTAx
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
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3
NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRp
YyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3Rl
Ym9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICBy
ZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFz
dGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkK
ICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUlu
ZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4
dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0
YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5
cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0
dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdj
MjgwODEzMWYyMTRiOGRhLi4zYjI4YmJkMTAyNTBhYWNjMzNiNWRhYzBmMWRiYmNkOGI1ZTUxZDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQpAQCAtMTE2LDIzICsxMTYsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICAgICAgYXV0byB3ZWJBcmNoaXZlVHlwZSA9IGJyaWRnZV9jYXN0KGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgQ0ZT
VFIoIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSIpLCBudWxscHRyKSkpOwogICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKKyAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgICAgIGlmICh3ZWJDb250
ZW50LT5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKICAgICAg
ICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKKyAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRG
XTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgpKQog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5I
VE1MRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOwogICAgICAgICBpZiAoIXdl
YkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+
Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNs
aWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3Vz
dG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVu
dE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxl
c3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5n
ZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4u
MWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02
OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJv
YXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFk
b3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRm
b3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBh
c3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFtt
X3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAg
ICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVy
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21f
cGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlw
ZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJp
bmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAg
fSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRv
IHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0
KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0K
IApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFj
YW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIg
PyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBA
IHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQ
YXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5k
ZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6
dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJv
YXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtp
dGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAg
ICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2Qx
OGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWlu
dDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5n
dGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjph
c1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4
X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1E
YXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDgu
LjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRh
OwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQg
ewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0o
Ym9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2
Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlm
NTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246
W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7
Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxl
Z2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIu
LmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xv
c2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHBy
b2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRp
cGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQp
IHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRo
ZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0g
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5k
OwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxl
Ojpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5k
YXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQp
IHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBk
YXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVy
LnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBl
bmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0g
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIu
cmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4
MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3
ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1
Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5
IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNi
Njc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDgg
Kzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0
YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1v
cnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJs
LCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8g
dGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVt
cFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAg
ICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRh
LT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVt
cEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
LCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAg
ICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXgg
ODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1
ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUs
IDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1
Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlm
IChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVz
UmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFk
IGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2Np
aSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTll
OGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEw
ICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEo
KSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250
aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAg
ICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNh
dGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwog
fQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAo
cmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5
NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5
ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojps
b2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsK
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYm
ICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1f
ZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3Vv
dXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2RhdGEg
PSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAg
ICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50
b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
NGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5
ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
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
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUw
NTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVy
aSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJl
cXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xv
YmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2Fu
UmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRk
NWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyAr
NDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAg
cmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0
MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRl
b1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQg
UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAg
ICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9
IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4
M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2YzguLmI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2
YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAg
ICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5h
cHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VC
dWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdp
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
YWRlciwgYm9keSwgeyB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0
Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVy
Q29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUo
KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZm
ZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZi
MTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUxZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVi
bGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIp
Ci0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAg
ICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDog
bV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVl
MjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2Mx
YzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFy
ZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJj
Zjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUx
ZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00
NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAg
LTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBz
aXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0g
ICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkg
Y29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBj
MjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4
YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VX
ZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQog
CiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRl
Q0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8v
IEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4K
ICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIx
ZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0
MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQs
IGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxl
IG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFj
ZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUo
KS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBs
b2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygp
OwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAg
ICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQw
ZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1
LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVt
b3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVk
eCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAg
cmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1
cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0K
IAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcAppbmRleCAwYzBmMDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0Li4y
YzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSw0OSArNTUsMTUgQEAgYm9vbCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBI
YW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDRikKLXN0YXRp
YyB2b2lkIHNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0ZSh2b2lkICpwdHIsIHZvaWQgKmluZm8p
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJ
blNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihp
bmZvKS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gY3JlYXRlU2hhcmVhYmxlUmVz
b3VyY2VEZWFsbG9jYXRvcigpCi19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGQWxsb2NhdG9y
UmVmPiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKFNoYXJlYWJsZVJlc291cmNl
KiByZXNvdXJjZSkKLXsKLSAgICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCA9IHsgMCwKLSAg
ICAgICAgcmVzb3VyY2UsCi0gICAgICAgIE5VTEwsIC8vIHJldGFpbgotICAgICAgICBOVUxMLCAv
LyByZWxlYXNlCi0gICAgICAgIE5VTEwsIC8vIGNvcHlEZXNjcmlwdGlvbgotICAgICAgICBOVUxM
LCAvLyBhbGxvY2F0ZQotICAgICAgICBOVUxMLCAvLyByZWFsbG9jYXRlCi0gICAgICAgIHNoYXJl
YWJsZVJlc291cmNlRGVhbGxvY2F0ZSwKLSAgICAgICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQot
ICAgIH07Ci0KLSAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAmY29udGV4dCkpOwotfQotI2VuZGlmCi0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQotewotICAgIHJlZigpOyAv
LyBCYWxhbmNlZCBieSBkZXJlZiB3aGVuIFNoYXJlZEJ1ZmZlciBpcyBkZWFsbG9jYXRlZC4KLQot
I2lmIFVTRShDRikKLSAgICBhdXRvIGRlYWxsb2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3Vy
Y2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nh
c3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsKLSNlbGlmIFVTRShHTElCKQotICAgIEdS
ZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVu
YyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxT
aGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIHRoaXMpKTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgorICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
KyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsg
fSwKKyAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUo
KTsgfQorICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJj
ZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsK
QEAgLTEzOCw5ICsxMDQsNyBAQCBTaGFyZWFibGVSZXNvdXJjZTo6U2hhcmVhYmxlUmVzb3VyY2Uo
UmVmPFNoYXJlZE1lbW9yeT4mJiBzaGFyZWRNZW1vcnksIHVuc2lnbmVkCiB7CiB9CiAKLVNoYXJl
YWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKQotewotfQorU2hhcmVhYmxlUmVzb3Vy
Y2U6On5TaGFyZWFibGVSZXNvdXJjZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTaGFyZWFibGVSZXNv
dXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogewpAQCAtMTYyLDcgKzEyNiw3IEBA
IHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNlOjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9zaXplOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaAppbmRleCA3YjQ3ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3Li5h
MGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgCi1jbGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJl
YWJsZVJlc291cmNlPiB7CitjbGFzcyBTaGFyZWFibGVSZXNvdXJjZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4gewogcHVibGljOgogCiAgICAgY2xhc3Mg
SGFuZGxlIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNo
YXJlYWJsZVJlc291cmNlOwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZh
dGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5
PiBtX3NoYXJlZE1lbW9yeTsKIAotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVk
IG1fc2l6ZTsgICAgCisgICAgY29uc3QgdW5zaWduZWQgbV9vZmZzZXQ7CisgICAgY29uc3QgdW5z
aWduZWQgbV9zaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjMGI2ZWYzZmEzYTJl
MTIwNGM2NzdlY2Y4NmFlY2JkMTliYjY0ZDdiLi4xNTVkZTc4MjFkZmJmZjM0MjkyMjZhM2U4M2Nm
NjkzZDZkYWI0MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRC
dWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5k
aWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZl
cihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3
ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmIChzaGFyZWRNZW1vcnlCdWZmZXItPnNpemUoKSA8
IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSksIGJ1ZmZlclNpemUpOworICAgIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1
ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGJ1ZmZlclNpemUpOwogI2VuZGlmCiAKICAgICByZXR1
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
CiAKQEAgLTMwMzEsMTMgKzMwMzEsMjMgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwg
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZm
ZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKK30KKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRG
T1JNKENPQ09BKQogc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRv
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CkBA
IC0zMDk1LDcgKzMxMDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
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
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYw
YWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAK
QEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAx
YmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4
LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9z
aW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3
YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248
YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rp
b24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBj
ZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEw
M2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTks
NyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxl
V3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8g
ZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBA
QCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYg
KCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzEx
NzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQog
ICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdo
bGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdo
dDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1h
Z2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGln
aHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAog
ICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpz
dG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAg
ICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxp
Z2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hs
aWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
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
b3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4
MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rv
a2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRl
cigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRm
NTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0
OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRh
LT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9z
eW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsK
IAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNi
YjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIx
NDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpS
b3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hv
d0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBh
MThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYx
NjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAog
ICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGli
cmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCks
IG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhOGU5MGU0MjlhNmVjZTEzNjg3
YjlmOTFiYzczODJjYTdjYjBmZjNkLi42NWU1ZDgyYTM1N2JjYmFhZjk1MDkwMzg1ZDJhZWRhMmVk
ZjM0MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVy
CiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2Fy
ZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRh
dGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk0LDcgKzY1OTQs
NyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApA
QCAtNzU2NSw3ICs3NTY1LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rp
b25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJD
b3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmls
ZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyop
V0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUg
Y3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAg
ICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURh
dGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYg
X3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91
bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
aW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVmYjll
MDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VI
YW5kbGUKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlC
dWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFn
ZUNsaWVudCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMz
Mzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5
MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVBy
b3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3
ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
aXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJv
eHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICBh
dXRvIHNoYXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJl
ZE1lbW9yeUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNo
YXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUp
OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVs
bCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNoaXZl
QnVmZmVyID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVI
YW5kbGUuZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVuc2lv
biwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2lu
SWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
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
N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVh
c2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAg
Ly8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBS
ZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9
IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNl
U2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2Ns
aWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRv
QVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05h
bWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODky
ZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYs
NyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRl
RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2Fk
ZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVS
ZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0
NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFl
NDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJv
Y2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQg
ZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5M
SUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRk
NDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFz
dGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJh
bmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRj
NmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lk
IHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJl
Z2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUx
MjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAg
ICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRh
ID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBt
YWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFS
ZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUuLjI5NGMyNDA3
MmRiZmU5N2QwYzY1N2I5Y2Y4ZTYxMGM2YTFiNGM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
YgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBl
cyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3Zl
cnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3Rl
Ym9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3Rl
Ym9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAg
Ly8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVi
b2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAg
LTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogICAgIGlmIChpcGNIYW5k
bGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihz
aGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlw
ZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKQEAgLTQwNCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVt
SW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAg
IHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRl
eCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0
KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2kKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUu
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFy
ZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFy
ZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwog
fQogCiBVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi5lYTg5
NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3ZWM1ZWVhYWRiYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
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
UGFnZS5jcHAKaW5kZXggZGQ1OWNmYTcxMDZmMDg0NDJlM2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4u
OWI5YTk4NmMwYzk2YTgzYWNmNWI4MjllNzM2MzkwNzE3NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzUsNyArNzczNSw3IEBA
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
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiZDVkNTM4MjA1NWM5
MjcxOTU3OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2MmJkNDk0ZTlkMWQxZDM1NGM1ZDc5ZjVk
YjgyOTBmMWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBs
b25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZh
NDcxNTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5ZWY3YjZjMzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9O
VUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmlu
ZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVm
ZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5
LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiArODAsMTMgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9F
USgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29w
eSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xv
bmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTcyLDMwICsxNzMs
MzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Z2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycs
ICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8
dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAg
YXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAg
ICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRh
dGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIo
aC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBp
amtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUo
KSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwg
ImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5z
aXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgp
LCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAg
ICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMDcsMTUg
KzIxMSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZm
ZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAn
YycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgp
KTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycs
ICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
RVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7
CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2Qn
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywg
J2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpp
bmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0
MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcg
KzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="470156"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445022</attachid>
            <date>2021-11-23 03:41:58 -0800</date>
            <delta_ts>2021-11-24 04:50:28 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211123224156.patch</filename>
            <type>text/plain</type>
            <size>392468</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
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
ZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0x
MDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAg
ICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2
MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2NTU5ZGE0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYxMjEwNDA1
ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2VlNDBhODdl
MDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
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
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1MGY3MWMy
YzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVhZTY1NTA1
MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2
MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZi
ZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3
ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcw
OTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNk
YzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3
Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsy
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2
NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3OWFhN2Iw
MTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRi
MS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQKLS0tIGEv
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
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJj
N2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBI
b3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhp
cyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0
aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNr
cyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVm
ZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
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
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li45Njk2
ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBk
YXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpA
QCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+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
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFl
NTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJm
YzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcy
NzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBl
Q2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8g
RG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBp
dCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5
LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0
aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05v
dGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUg
ZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJv
dW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtl
bHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVy
YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhj
MmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2
MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
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
ZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1
NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVk
c0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3Jh
cHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0
b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wg
aXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMx
MTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFk
Yzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQog
CiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJ
bWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdl
RGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRh
dGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdl
dCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBj
YW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2Ny
aXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2Zl
Yjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRl
SW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkz
OWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTky
NGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAg
ICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAK
ICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChk
YXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlm
IChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0
YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5j
Y2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVz
b3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2Vu
dCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNl
bmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAg
ICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVl
ZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRl
cjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhl
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5k
ZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9j
dW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1l
bnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCku
dXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBA
IHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1
MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRl
eHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYw
NDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMs
MTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9p
ZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChk
YXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9T
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
c291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVh
OWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQz
MWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5
ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6
OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdo
ZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0
byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxs
ZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4K
LSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3
MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0
cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUx
YzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVh
ZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVh
ZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0
YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxl
LmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVz
UmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGlu
Z0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMx
OGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsK
IAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51
bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1
NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyog
SFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxl
bWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewog
ICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0
ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAg
ICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3
IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJv
YXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAg
IFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAg
ICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyBy
ZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5n
IHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTMyOCw3ICszMjks
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNv
Y29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBj
b2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0
cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRp
ZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5k
ZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgw
OGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0
b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9u
VmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7
CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3Rl
bgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVy
biBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkz
OGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRj
Y2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAg
IHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2lu
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3Rv
bURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZy
b21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNv
ZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2
OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiAr
MzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAg
cHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4m
IHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
ZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4
IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1
MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAg
LTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0
cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7
CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUlu
U3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAg
ICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApp
bmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1
MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVf
cGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFz
cyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJ
bWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsK
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9y
RE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBl
cyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25z
dCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3
OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNj
ZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlm
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IDQ3NTQyZGFjYWViODZhNWMzYWU4OGZlYjRkZmFmNDQ5ZmMzZWZjMzUuLmFmNWY5NGRhNzFj
MTNlN2RmZGMzNTliMjA0ZjM1M2U0MWJhZjhiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVy
KSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCkBAIC02NCw2ICs2NCwxMSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAorU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQoreworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiAjaWYgVVNFKEdTVFJF
QU1FUikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93
bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7CkBAIC03MywyNiArNzgsMTAgQEAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBl
ZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
JiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVy
KX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFw
cGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBp
bmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgs
IG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3Vj
Y2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArOTIsMTYgQEAgc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0
aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBh
bGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhl
eSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdt
ZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91
cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2Vn
bWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlS
ZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2Vn
bWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsK
LSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29tYmluZWREYXRhKSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlE
YXRhKCkgY29uc3QKQEAgLTE3NSw2ICsxNTAsMjEgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9I
ZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKK3NpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Np
emU7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIXNpemUoKTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91czsKK30KKwogUmVmUHRyPEFycmF5QnVmZmVyPiBT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwpAQCAtMTk2LDEwICsxODYsMTAgQEAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0g
ICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQo
IW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBt
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAg
IH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMDcsMjMgKzE5Nywy
OCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVj
dG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21l
bnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0
YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRh
U2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKK3ZvaWQgU2hh
cmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAg
ICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKQEAg
LTIzNywxNyArMjMyLDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgp
IGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50
cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAg
ICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92
aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShw
cm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0
CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zMjIsOCArMzEyLDcgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21l
bnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBl
bmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAx
OwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTMzOSw3ICszMjgsNTcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NF
UlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpk
YXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
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+ZGF0YSgpOworfQorCitjb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zNTgsNyArMzk3LDcgQEAgY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNl
Z21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJs
ZURhdGEpOwogfQpAQCAtMzY5LDcgKzQwOCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgp
IH19OwogfQpAQCAtNDIzLDcgKzQ2Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK3NpemVfdCBE
YXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXpl
X3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NDIsNyArNDgxLDcgQEAgc2l6ZV90IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBz
ZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50
KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
ICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9u
V2l0aGluU2VnbWVudCkKQEAgLTQ2NiwxNiArNTA1LDIxIEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRh
KCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citjb25zdCBjaGFy
KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK1JlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBk
YXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkg
eyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUg
YSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25z
dCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTAxLDcgKzU0NSw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
fQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVy
LmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAppbmRleCAzOTUzYjExMmJiMTEwNzUwYTdjYjE3NDNhOGRjZDc3MjQ3
YWRhMWFiLi44ODhkYjU3NzQyNjIxYmYxZTAyYzRkYTY0NTM4NDhjZDg4M2VjNGU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ1ICs2MiwxNDYgQEAgY2xh
c3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRC
dWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11
dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNl
Z21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9Ci0KLSAgICBlbnVtIGNsYXNzIE1heVVzZUZp
bGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNo
YXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJp
bmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNy
ZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYg
VVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0Owot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lk
IGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0
ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxs
IHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkg
YXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2lu
KCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVz
IG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3Nz
aWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLQot
ICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwg
dGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBp
cyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVj
dCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Cisg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdy
YXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2Fu
IGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29t
YmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0
YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1
Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0
YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVy
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7
IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotI2lmIFVTRShGT1VOREFUSU9O
KQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRp
ZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6
dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVu
dChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OwogCi0gICAgICAgIHN0
ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsg
fQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KKworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0Rh
dGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAg
ICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0
cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
LAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5k
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgp
IGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBp
dCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1
aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBh
bmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFy
cmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBi
dWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9V
TkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5k
aWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVm
KTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdm9p
ZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjA5LDUzICsyMTAs
OTggQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFT
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
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07
CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2YXRlOgog
ICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJu
cyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rv
cjx1aW50OF90PiB0YWtlRGF0YSgpOwotICAgIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9z
ZWdtZW50czsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsK
IAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEg
U2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2
aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6
ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihB
cmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFT
ZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9t
IHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0g
Y2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1h
cHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigp
KQpAQCAtMjY1LDIxICszMTEsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
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
LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5
OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QK
ICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsK
IAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3Vz
SW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBj
b250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBp
bml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBz
c2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAog
ICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAK
LSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0lu
aXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29u
dGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUo
KTsKQEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRo
ZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVy
czoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1l
bnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNl
cXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRh
LnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgp
KSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkp
OwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBj
NTguLjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJy
YXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5n
KCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigp
LCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2Vl
Y2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5
M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9v
bChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhl
NWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi4yNDZiYjBkNTMxYTk3ZTIwNWVkNTZiOWEzZmZk
NTk4ZjUwMDgyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEtleWVkRW5jb2Rlckds
aWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rp
bmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3Zhcmlh
bnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZj
MDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jMTVkOWZmMzUwYzIyNmJjMzUxNDIxOTQyZTUzODViN2Ez
MWZmOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIo
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWdvdXNTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVu
Y29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
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
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3
MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJkYTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBA
QCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIG1f
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5n
ZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZl
cik7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgs
NyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0
YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6
Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25z
ZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAg
ICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
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
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlMWEy
MWEyOTc0MThiN2E1MTU4MDI4M2Q1NTkwNzA1MGNlNTUyYjkxLi5kNTZiMTk4NTE0MjU3NmE3NWU5
ZWQxMTFkMGY2NzkyZjljNmEwYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY0NCw3ICszNjQ0LDcgQEAgdm9pZCBNZWRpYVBsYXll
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
LjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYyYTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAg
LCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAg
ICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91
cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVm
ZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0
Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZv
bnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5n
ZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250
RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBi
dWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2
NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdm
Y2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9k
b2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0
TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4u
YjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFs
aWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGlj
c0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxp
YyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZf
dCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVp
bnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
b09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3Qg
R2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0g
MHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJs
eVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFz
dXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUg
dmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6
ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJp
YW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUz
LDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2Ugewog
ICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJp
YW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYg
YXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1i
bHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIs
IG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsg
Ly8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlv
bnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4K
IAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9u
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3Ry
dWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgs
IGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0g
dWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENv
dW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVj
dGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBN
YXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIx
Miw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBo
SW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5
cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9P
ZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0
NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5
cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEz
Myw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJV
bmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
aW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVk
ZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAt
NzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBU
YWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90
KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3Qp
KGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1
ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
ODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2Ug
ewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBw
b3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5k
IGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWlu
dDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2
YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQx
Nl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihi
dWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwog
ICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFn
ZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3Zl
cmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFn
ZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wg
Z2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVy
YWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFn
ZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZh
Y2EzZmNiZjkyZDFhLi45NzQwOGE4OGUwNmQ5M2NjNjM5ZjY0NzJmNzMzNDg2YmE0NTJjMzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBF
T1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhl
IGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRv
IHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJs
ZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5
IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkK
K2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0
YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAg
ICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVh
ZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbgogUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwotICAgIGlmICghcmVu
YW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKKyAgICBpZiAo
IXJlbmFtZUZvbnQoZm9udERhdGEubWFrZUNvbnRpZ3VvdXMoKSwgZm9udE5hbWUsIHJld3JpdHRl
bkZvbnREYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIERXT1JEIG51bUZvbnRzID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQy
MTViN2U3NDg1MmMxOWUzN2YuLjNlNWM4ZTA0MTc3Nzc5ODM5NGFmYTM2Y2FmZjM2NmVmMmZhODA3
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3Vy
Y2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Citib29s
IHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYs
IFZlY3Rvcjx1aW50OF90PiYpOwogUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5k
ZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1
MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJh
c2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJs
ZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1
ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyAr
NDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsK
ICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRz
IHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVh
VGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEp
CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdz
dWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIp
OwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0
aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0
OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBj
cmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5p
cXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVm
MTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5
OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAt
MzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBG
b250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1l
bW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRT
ZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0
aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJm
N2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1
ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmlu
ZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNi
YzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fp
cm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAm
JiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5
M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTll
NWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwx
OCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4g
Zm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNl
bGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRh
KGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXpl
ICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAg
ICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRh
dGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9
PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsK
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
Li43ZjRkMDk2MjAwNTY5MTY2ZDc1MTk2Mzg5MmM4ODlkZDUyNDc3OWM3IDEwMDY0NAotLS0gYS9T
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
dHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOwogCiAgICAgaWYgKGNvbnRl
bnQuZGF0YUluUlRGRm9ybWF0KQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOwog
CiAgICAgaWYgKCFjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQuaXNFbXB0eSgpKSB7CiAgICAgICAg
IE5TRGF0YSAqaHRtbEFzRGF0YSA9IFsoTlNTdHJpbmcgKiljb250ZW50LmRhdGFJbkhUTUxGb3Jt
YXQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwpAQCAtNTAxLDcgKzUw
MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50
LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0
ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQo
KSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0
YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkg
PT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwor
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAg
ICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xh
cmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZy
b21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVd
OwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0
ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2Vu
ZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RB
VEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2Fy
ZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAg
ICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAg
c3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBz
ZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFk
YXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hh
cmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAg
ICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGlu
IHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAg
ICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBi
ZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAg
ICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2Ug
bmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAt
NjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
dmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwor
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2Nv
YVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7
CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjph
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0
cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVn
ZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJP
Zkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
W3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwog
fQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
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
YzI4MDgxMzFmMjE0YjhkYS4uM2IyOGJiZDEwMjUwYWFjYzMzYjVkYWMwZjFkYmJjZDhiNWU1MWQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIu
bW0KQEAgLTExNiwyMyArMTE2LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgICAgIGF1dG8gd2ViQXJjaGl2ZVR5cGUgPSBicmlkZ2VfY2FzdChhZG9wdENGKFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIENG
U1RSKCJBcHBsZSBXZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5cGUiKSwgbnVsbHB0cikpKTsKICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07Cisg
ICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKICAgICAgICAgfQogICAgICAgICBpZiAod2ViQ29u
dGVudC0+ZGF0YUluUlRGREZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CiAgICAg
ICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVi
b2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CisgICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJU
Rl07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdC5pc051bGwoKSkK
ICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUlu
SFRNTEZvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVIVE1MXTsKICAgICAgICAgaWYgKCF3
ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JU
eXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5j
bGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1
c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRl
bnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5s
ZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSku
Z2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRl
bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJv
YXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMu
LjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAt
NjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVi
b2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9w
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
CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVm
ZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICgh
Y2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVy
ID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBA
QCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5T
UGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdElu
ZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBl
OnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVi
b2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAg
ICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBb
aXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAg
ICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2ZTEyNjJlN2QwMDhmNzkwNS4uYzdk
MThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGViNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMSwxMyArNDExLDEzIEBAIHVp
bnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVu
Z3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVk
QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6
YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50
OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3Jt
RGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4
Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0
YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50
IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRh
RWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNv
bnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBj
b25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFt
KGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2
NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VI
YW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YSho
YW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgp
OworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAt
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
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUy
OTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFm
OWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSht
X2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1
b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRh
ID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAg
ICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCku
dG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4
IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFhZjI3ODkuLjFjMGI1NzhhMGEwNDEx
OWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
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
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1
MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1
cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCBy
ZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGds
b2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNh
blJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
aW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlk
ZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcg
KzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAg
IHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgz
NDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lk
IFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIg
PSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdh
ODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4OTMyZjI4MWI3MTJlMDBmZjdhZjI2
NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2
b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAg
ICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIu
YXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNl
QnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUx
MTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdi
ODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkK
LSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgp
LCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZi
NGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYx
MjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01
ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3Jk
SW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAg
ICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRh
dGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsK
QEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShj
b25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJl
Y29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdl
LmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VC
b2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9k
eS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFl
MDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZm
ZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9i
dWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBo
ZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNm
NGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZl
ckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXpl
KCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVm
ZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZm
YjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1
YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0K
ICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0g
ICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZl
ZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2Nj
MWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hh
cmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBj
b25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAy
Y2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1
MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBA
IC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ug
c2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2Ew
YzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMz
OGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNl
V2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
IAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0
ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAv
LyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEu
CiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGVi
MWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEz
NDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0
LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJs
ZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZh
Y2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVl
KCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8g
bG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAg
ICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJk
MGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJl
bW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAl
ZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAg
IHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
eyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9
CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4ZmJlNTEyNTU2ZTE2NC4u
MmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkgKzU1LDE1IEBAIGJvb2wg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
SGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ0YpCi1zdGF0
aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAqcHRyLCB2b2lkICppbmZv
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4o
aW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNyZWF0ZVNoYXJlYWJsZVJl
c291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRv
clJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihTaGFyZWFibGVSZXNvdXJj
ZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsCi0g
ICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4KLSAgICAgICAgTlVMTCwg
Ly8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRpb24KLSAgICAgICAgTlVM
TCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0ZQotICAgICAgICBzaGFy
ZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8vIHByZWZlcnJlZFNpemUK
LSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKLXsKLSAgICByZWYoKTsg
Ly8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMgZGVhbGxvY2F0ZWQuCi0K
LSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291
cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0YXRpY19j
YXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBH
UmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1
bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCB0aGlzKSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsKLSNlbHNlCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7
CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7
IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXpl
KCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7
CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNoYXJlYWJsZVJlc291cmNl
KFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25lZAogewogfQogCi1TaGFy
ZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0KK1NoYXJlYWJsZVJlc291
cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgU2hhcmVhYmxlUmVz
b3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAgLTE2Miw3ICsxMjYsNyBA
QCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNy4u
YTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFy
ZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1YmxpYzoKIAogICAgIGNsYXNz
IEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9y
eT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNldDsKLSAgICB1bnNpZ25l
ZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0OworICAgIGNvbnN0IHVu
c2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzBiNmVmM2ZhM2Ey
ZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uMTU1ZGU3ODIxZGZiZmYzNDI5MjI2YTNlODNj
ZjY5M2Q2ZGFiNDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVk
QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEzICsyMzQsMTMgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCkg
PCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5
QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIgPSBzaGFyZWRNZW1vcnlC
dWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNlbmRpZgogCiAgICAgcmV0
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
OwogCkBAIC0zMDMxLDEzICszMDMxLDIzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7
CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5wdHIoKSk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFU
Rk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRU
b1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewpA
QCAtMzA5NSw3ICszMTA1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
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
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2
MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4
MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUw
MWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICsz
OCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xv
c2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0lt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2YzQxZTEx
N2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzViMTE0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9u
PGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXRE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVu
Y3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0
aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXgg
Y2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1Zjhh
MDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmls
ZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRv
IGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAg
QEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlm
ICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYwOTBmNjcx
MTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdhZGE2M2Fh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBX
ZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkK
ICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGln
aGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGln
aHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGlt
YWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxp
Z2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAK
ICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQog
ICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hs
aWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdo
bGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZi
MWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
QEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFu
YXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
KSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZp
ZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCmluZGV4IDE3NDcwYzYyYzcyMGRkZTgyYjc5MTViN2IzYjU4MjAyM2ViNTFlYzcu
LmJiZWY2NjczNTFhMGEyYmY1OGRmYWY1YTcyMTAwMDZhMzE4ZWFmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
MCk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHN0YXRpY19j
YXN0PHNpemVfdD4oaXBjSGFuZGxlLmRhdGFTaXplKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
c2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXpl
KTsKICAgICAgICAgYXV0byBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBl
KTsKICAgICAgICAgZGlkTW9kaWZ5Q29udGVudHNPZlBhc3RlYm9hcmQoY29ubmVjdGlvbiwgcGFz
dGVib2FyZE5hbWUsIHByZXZpb3VzQ2hhbmdlQ291bnQsIG5ld0NoYW5nZUNvdW50KTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3Q2hhbmdlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2
Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0
ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYg
KFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9w
YWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAg
fQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAg
ICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZp
c2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAg
ICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBA
IC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9f
YnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0K
IApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVX
cmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJl
c3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsK
IAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0
YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAg
ICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVi
b2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4u
NTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVy
cHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2Uo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nhcnko
V2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4
ODI3ZWIyOTEyYTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dU
b2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25k
ZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBk
ZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNl
NDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlv
blR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0
YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1f
c3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07
CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9y
LCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1n
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
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0
ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bh
c3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCBy
YW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0
YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFs
OwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1
MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRh
UmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCA1ZDA1YzBlYWI3NmI2MmI0ZjgzNmM4NTgyMjFmZWE0NDcyZTA1NTZlLi4yOTRjMjQw
NzJkYmZlOTdkMGM2NTdiOWNmOGU2MTBjNmExYjRjN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92
ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0
ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAg
IC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3Rl
Ym9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBA
IC0xNDUsNyArMTQ1LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYKICAgICBpZiAoaXBjSGFu
ZGxlLmhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlm
ICghc2hhcmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFT
aXplKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCkBAIC00MDQsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAg
ICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5k
ZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4
dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpAQCAtNDEyLDcgKzQxNCw5IEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVk
TWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIGlmICghc2hh
cmVkTWVtb3J5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsK
IH0KIAogVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uZWE4
OTUyZGI1OTE3ZjQxN2ZiNjVhMzE4Y2YzN2VjNWVlYWFkYmEzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
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
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGRkNTljZmE3MTA2ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYu
LjliOWE5ODZjMGM5NmE4M2FjZjViODI5ZTczNjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25z
dCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9y
YWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hh
bmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Ny
b2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVT
aGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGln
aGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
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
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBm
ZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0
YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJS
ZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJj
ZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3du
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYmQ1ZDUzODIwNTVj
OTI3MTk1Nzk2N2U1ZmJmYmUyNjJhZThmNmM0Li43M2E5NjJiZDQ5NGU5ZDFkMWQzNTRjNWQ3OWY1
ZGI4MjkwZjFjNDRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisK
IDIwMjEtMTEtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIG9sZCBjb25jdXJyZW50IGRpc3BsYXkgbGlzdCBsb2dpYyB0aGF0J3Mgbm8g
bG9uZ2VyIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCAzNjkyOTcyZGVhYTc2OTRhMWI2YzFmZmZlNDE4ZTVm
YTQ3MTUyNjRjLi5hMTE1ZDRiZTFmYmI2M2ZlNThmNTkyMWE0ZTE1OTkzOWVmN2I2YzM0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cApAQCAtNDAsMzggKzQwLDM4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRf
TlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJU
X05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJp
bmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5
QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1
ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29w
eS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAg
ICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODAsMTIgKzgwLDEzIEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7
CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU2LDcgKzE1Nyw3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNp
emUoKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNv
cHkoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNT
RVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xv
bmUtPnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNs
b25lLT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAg
IEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3MiwzMCArMTcz
LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2Mn
LCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9Owot
ICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAg
IFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAg
IGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwog
ICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5k
YXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1
dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gy
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVE
YXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNk
Iik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNo
ZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVy
KGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwg
aWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXpl
KCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCks
ICJhYmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wu
c2l6ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUo
KSwgImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNo
ZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwog
ICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjA3LDE1
ICsyMTEsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVm
ZmVyOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAn
YycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywg
J2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQo
KSk7CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2Mn
LCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0p
LmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkp
OworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdk
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYics
ICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
aW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDVi
NDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3
ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445087</attachid>
            <date>2021-11-24 04:50:36 -0800</date>
            <delta_ts>2021-11-24 05:52:10 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211124235034.patch</filename>
            <type>text/plain</type>
            <size>301019</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYw
YTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9p
ZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZy
b21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJr
dXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNh
NDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGlt
YWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpi
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8g
bnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAg
ICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0s
IG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEw
YWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2Vk
UmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXBy
ZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50
YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHBy
b3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIw
YzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMy
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6
UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwg
WyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBm
b3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwg
W10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA5MDk4ZTA1YWY0Yzg0MzNiM2QxM2IzOTU2NTA2
NGE5YzE1NDMzODdkLi42YjkxM2U0NzAzZjAxM2MxM2NlN2E2MjBiYTA4ZWFjOWM1MzYxMTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAwLDEzICsz
MDAsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZv
cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25z
ZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURh
dGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4m
JiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAo
cmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0
aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8
RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAo
YXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAg
IGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCBy
ZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZv
aWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRh
dGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFm
OTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hS
ZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVS
ZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQz
MDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCAr
MTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5j
b3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAv
LyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5l
ZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAg
ICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShj
b25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9k
eSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAg
ICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxs
cHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6
OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThl
ZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBA
QCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7
CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25z
Jik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBi
ZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkw
ZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyAr
NjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1s
I2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQs
NyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
ICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtp
ZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNB
cnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCku
dXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5
YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZl
NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9v
bCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
YikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5m
MTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hC
b2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAg
aWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkg
ewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBv
d25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRy
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRh
aW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsy
NzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25z
dAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3Jt
RGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIu
ZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9k
eTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9j
b25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYg
KGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBG
ZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBp
ZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5j
b2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5j
b2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUo
dXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9k
eSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5n
dGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJW
aWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNz
KCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXgg
YmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5
OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3Jt
RGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRh
dGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRh
KSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUw
ODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTI2YjUzODQ4YTk5MDlkYzcyNDA5NzFiNDQ3NmRlMGJl
MGUwYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBj
bwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERh
dGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVG
cm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Us
IGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29u
c3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEo
KTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwg
Y29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkK
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4o
KmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5
cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IDVkNDUyY2UyODhjZWRjMDI5MzJkOTM5NmY2NDYwMDQ2ZTQ2YmQ1MzYu
LmU0ZTkwOGYyYmM5YTA2ODMwZTY0YmFjNWQzMTAwYzg4MGFiN2MxZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENv
bnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAg
IGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3Bh
biBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAg
bV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3ICs0NDIsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2
NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAg
ICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAg
ICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAg
ICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
ICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAg
ICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYmM1ODU0
ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOS4uYTE2MDc0N2RlMGNlYWNlZWNjNzc4
ZDFmZjdiNWZiMmFlMGVhMTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0
cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNw
b25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0
YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQx
OWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0
MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgp
LCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNiOTVkN2NmMDA3YWE1
NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00Niw3
ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0
MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0aW9uYWw8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2Rlcigp
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwor
ICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRh
dGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMmEyYzFm
YzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJl
NmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBO
dWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkK
ICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29u
c3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29k
ZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5
KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhj
NTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
SURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVj
NTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8K
ICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJh
bnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRo
QmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5
UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3Rv
cmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdl
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRv
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAg
aWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBj
cmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3Qg
SURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5k
ZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGlu
ZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9z
IH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5k
ZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRh
dGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpA
QCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGlu
IG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3Mg
fTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NF
UlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwog
ICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0
byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSBy
ZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJl
YWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
YmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQg
aW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYg
KGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051
bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAg
IGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1
cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBw
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElE
CiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6
S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlm
ICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAg
b25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSBy
YW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxv
d2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24i
X3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxs
KCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkp
OworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
ICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4
NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1
bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5
KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJp
bmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
ICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVu
dCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBhZmVm
NDMyOGM2YWMyMGI2YTQ2MjFmZGU4YzRmZGVlNjJiOTY3YWEzLi4wMDI3NTcwODAyYjE0YjA5ZDFh
YTA0ZmNmNDdjNTgwOWMwOWMxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpy
ZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0
byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
PmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApp
bmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li5lNzllYmRiYWM0
MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRN
ZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0Rh
dGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAg
ICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0
cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IGFlN2IyZTJmY2EwZDM3YWE1Mzk5OWZhNjI4NGE0NTlh
NGU0NzMxYWMuLmJlZjRkMmQ3YWM3ZWVjZDkxN2MxZjY0M2E1MjdlNWQ2Nzc2MjQ4NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0
YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3Nzcu
LjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVs
TG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwm
IG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVD
b3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5
dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNl
LmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUx
NDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3
IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlv
bihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZv
cm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBj
cmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7
CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4
M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4
OThmYWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAg
cHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZm
ZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAg
ICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAg
ICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJp
bmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIu
dG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2Nv
bnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0
LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7
CisgICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3Vz
QnVmZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11
dGFibGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYw
YmFkZC4uNGI0Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9p
ZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAg
ICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVt
ZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Z2VuZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RG
QnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVy
LCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBA
IHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAg
ICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1f
aW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBw
aW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBt
X2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5i
eXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJp
bmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+
KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3
ODJmYmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMy
Nzg2YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFz
cyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQy
LDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNz
IFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNl
dHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciBy
ZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRz
LCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0
Y2I3ODIwN2FhNC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3YjcwYTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxl
bWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9u
YWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRh
OworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxE
YXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFi
NDcyZWY5OGIxMWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMyMzUxYzlmZmEyYWI5
YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRD
b21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9T
dGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsK
IGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUz
Niw3ICs1MzcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVi
b2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRp
bmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFj
aG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5n
PiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAg
IHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZl
Y3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2MTksMTIgQEAg
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
Y29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIu
LmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZv
aWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0
cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdl
IGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0
YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JB
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsK
ICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFy
Y2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJl
Q29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0
OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRy
XSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3
ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBF
ZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5
LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50
KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJv
YXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRl
ckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9t
U2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2
ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JE
YXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0
b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVk
U3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
OwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
c3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
W3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZG
b3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4
ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3
ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVy
dGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVy
bCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVU
eXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0
ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFt
ZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyAr
MjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JV
UkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkg
ewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291
cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2Ut
PnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5h
bWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWlt
ZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdl
KCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1h
Z2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAg
ICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZh
YTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2ZDJhYzI5NjMwNWQ2
MGM2MzE3MzY3MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAg
c3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbklu
Zm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlw
ZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1l
bnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZy
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291
cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5k
KHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBw
ZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYg
KCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJh
bWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlv
bkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2Ug
fSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxI
VE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGlj
IHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFw
cGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlv
bkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAg
ICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZl
PiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2Fu
U2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAg
IHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25O
dWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hp
dmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYg
KCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7
IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJj
aGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0
byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3Rp
bmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQs
IGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFt
ZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJl
c291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRv
IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkp
OwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2
NTcsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2
NzYxMDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTky
YmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1
ICsxNjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSog
bm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hp
dmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdl
dCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0
byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3
aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlz
IG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBz
dXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2Rl
ZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYs
OSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxp
bmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHBy
b2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERp
cmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUp
LCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdz
KQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNl
dHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVc
biIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3
IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1
ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShk
b2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJ
bnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlm
IHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxh
dGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hl
bmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1
YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNm
MmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNl
OwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1
ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVy
LT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0
aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRi
ODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBA
IC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRS
ZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlm
IChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVU
eXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3Bv
bnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAg
ICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVz
dWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVj
ZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAg
LTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VD
b250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhC
YXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4g
ZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJl
c3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0
ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYy
MmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
ICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkp
Ci0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291
cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Ns
aWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3Rh
dGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3
ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2
N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVM
b2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0
eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBh
dXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7
IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBk
MGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBi
b29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hp
dmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291
cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAg
ICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsK
IAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5S
ZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAg
Y29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRh
KCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUy
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBt
X3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZm
ZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsy
MjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9j
b21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEg
PSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNi
ZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9y
bVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJj
ZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQy
ODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1
MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3Vy
aXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Ig
c3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlm
aWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCmluZGV4IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYy
MmFiZTM1NWQxMDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAg
dm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3Bh
Y2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1
N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZy
YW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRl
bnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRl
ck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVy
cmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVy
KCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9h
ZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0
aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRp
b25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0g
ICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25z
ZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0
aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0
TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Njcmlw
dExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZl
MTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJm
MGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01
OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1
dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsx
MjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAj
ZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25z
dCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwg
Y29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwg
Y29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBT
eXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVM
b2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2
YWMyMzUuLjkwNmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZlNGY1NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1
dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNl
LgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpT
ZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVk
RGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
ZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4o
ZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRm
OWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhl
NWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3
OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTVi
YWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgp
Lm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1h
bmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBv
ZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNl
TWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJB
cHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0
YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4
ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2
MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAg
VVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0
aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGlj
IGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENs
aWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZm
ZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwor
ICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNv
dXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0
YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxk
TG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAt
Mjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVk
aXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEg
Y2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVu
dCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRo
ZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhl
IGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFj
a1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSBy
ZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2Fi
bHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAv
LyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3
aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
LmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2
YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3
NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCAr
MTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJh
Y2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5
bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJh
Y2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJl
TG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lk
IG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQw
Y2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9u
c2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250
aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBl
KHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFm
ZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRk
ZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwg
cGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFT
dGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0
cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVu
c2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0
ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1
dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9i
KDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9u
ZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQx
Njc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAv
LyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkg
YW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAK
LSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBj
ZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3
LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVk
ZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFp
c01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9
IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkK
LSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVn
YWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdl
dCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3Bv
bnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsK
IH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25z
ZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291
cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNw
b25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENG
U3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3Ry
aW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3Jl
YXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VE
YXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1Niwx
NSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0g
ICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAg
ICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0
YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0g
ICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3Rh
dGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAs
IGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAg
ICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJM
JiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQo
cGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90
IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hp
dmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
Mjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5
UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VL
ZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRp
bmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBu
b3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShz
dWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9v
bCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQog
ICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFt
ZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVh
dGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVE
aWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFt
ZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lw
cGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYg
cmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwog
ICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQn
cyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpA
QCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1l
bnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAg
ICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBi
ZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBh
IGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAg
PSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVp
Z2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAi
XCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJk
MGJkYjgwMTVlLi4zNTk3NWQyNTc1NGZkYWRiMThkNWRmMTg2ODQxYjI1ODYxNzZhOTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9
IGNvbnRlbnQtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFk
ZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFz
ZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFz
ZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAg
ICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxp
ZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxl
OgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShj
b250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6
QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTog
dGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCBy
ZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8g
cmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9u
LTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBh
YnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVj
YzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZi
MTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChk
YXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJp
Y3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTli
MTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApA
QCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRU
ZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4g
bV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4
dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1l
bW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAog
dm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAog
dm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8v
IERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNo
ZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisg
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRo
ZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5
IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcx
ZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2
LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEg
PSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKIH0KQEAgLTkwLDcgKzk1LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBk
YXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBD
YWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
cmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
Ynl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7
Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZi
eXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVm
ZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
YnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcg
QEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAg
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xp
ZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0
KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFm
ZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25z
dCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVh
dGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVS
SSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENy
ZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25D
b250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlm
NjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFkYzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7
CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywx
NCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0
YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2
YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0
YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNl
KCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1
cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VC
S0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZE
b2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRh
dGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGlu
ZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMg
bm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5k
ZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYz
MmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBk
YXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVk
RGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERh
dGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFl
YjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTkyNGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUg
PSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNp
emUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsK
LQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50
YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1Jl
Y2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0
MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3
YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0
aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNl
RW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0g
bmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAg
bV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIg
fTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1
M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5jY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0
YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2Fk
ZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpA
QCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8q
IHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJl
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAt
MzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNv
dXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1
ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAog
cHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBV
c2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4
NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2
MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVu
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBh
IG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50
IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51
bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50
LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJp
Y3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0Mzcx
OTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNo
ZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlv
bnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0
Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rl
ci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVk
U1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJ
KQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFj
ZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0
byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZl
cnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0
ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVh
ZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgog
ICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBm
aXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0
ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRF
bGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYw
N2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGVi
MDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2Ny
aXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3
ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAg
ICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNl
Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYx
ODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZi
MTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMsMTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxl
U2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAg
IGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLmgKaW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUz
MzRlYTRkYmE1Yy4uZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaApAQCAtMzIsMTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVS
TFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIERpc2tDYWNoZU1vbml0b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0
b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpT
ZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2Fj
aGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tl
ZChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250
aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tCmluZGV4IGZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5
NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMg
KzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBz
ZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVk
IGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tD
YWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNo
ZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0
TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2
b2lkIERpc2tDYWNoZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAg
RGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2Ft
ZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9p
ZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1l
bW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVl
c3QsIG1fc2Vzc2lvbklEKTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4u
YTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNv
ZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4
YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcg
KzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAg
ICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNw
ZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVz
LCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0
L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAg
YXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmQ3NTBjZmY5
NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0g
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUo
KSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVu
dGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1
dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29u
c3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJz
ZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAg
ICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hh
cnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAg
ICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpj
cmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxl
SGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29k
aW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAg
LTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2Vz
KENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7
IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5
YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1l
VHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBh
Z2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmlu
ZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIy
N2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApA
QCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewog
ICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAog
c3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4
ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFS
ZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAg
IGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3Vs
dCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxl
TmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZl
ci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEu
ZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAg
ICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5k
aW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFy
KCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5n
LmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3
YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2
MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYg
a2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3
ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDcz
OTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
QEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1
bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQg
KzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBP
UlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsK
ICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9y
bWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3Rl
Ym9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhU
TUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwg
dXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7
CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsK
ICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNo
U2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAg
U3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVj
dG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMz
OGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZk
Yjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRh
CiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApA
QCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAg
IGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8
IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVy
LmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpA
QCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5j
ZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVj
NjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
QEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4o
Y29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVk
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhm
YjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxT
dHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBy
ZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRv
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZk
NDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3
MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
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
NTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJj
YTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBh
c3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9h
cmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3Rl
Ym9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0
ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdl
VHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNp
emVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZl
YzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1l
bnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBA
QCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxT
dHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNDc1NDJkYWNhZWI4
NmE1YzNhZTg4ZmViNGRmYWY0NDlmYzNlZmMzNS4uYWY1Zjk0ZGE3MWMxM2U3ZGZkYzM1OWIyMDRm
MzUzZTQxYmFmOGIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNp
emUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6
ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYg
KzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBl
ZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
ICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwog
fQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29t
YmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcgog
ICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQg
aGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2Yg
YXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIp
IGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAx
KQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1
cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0
PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisg
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRv
IGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsK
LSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBj
b21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsK
IH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAt
MTc1LDYgKzE1MCwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0
CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBT
aGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQor
Citib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSgpKSwgMSk7CkBAIC0xOTYsMTAgKzE4NiwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEu
bV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEu
bV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAg
ICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIwNywyMyArMTk3LDI4IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFy
ZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAtMjM3LDE3ICsyMzIsMTIg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9u
ZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7Cisg
ICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUt
PmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQot
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNl
Z21lbnRzID0gbV9zZWdtZW50czsKQEAgLTMyMiw4ICszMTIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0g
ICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0g
ZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NF
UlRfRU5BQkxFRApAQCAtMzM5LDcgKzMyOCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9j
b250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUg
PSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNl
Z21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250
aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdt
ZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250
aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNl
Z21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVy
LT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9
IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVy
KFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1h
cHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5n
OjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2Rl
LCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7
Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIo
KSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAg
ICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEo
KTsgfSwKQEAgLTM1OCw3ICszOTcsNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC0z
NjksNyArNDA4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00MjMs
NyArNDYyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRh
LnNpemUoKTsgfSwKQEAgLTQ0Miw3ICs0ODEsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9p
bW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBz
ZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNp
emUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpA
QCAtNDY2LDE2ICs1MDUsMjEgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewot
ICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0g
bV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkg
eyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyBy
ZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9
CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5v
dWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MDEsNyArNTQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIu
c2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDM5NTNiMTEyYmIxMTA3NTBhN2NiMTc0M2E4ZGNkNzcyNDdhZGExYWIuLjlkNWQxODEz
MjRkMzFiODk0MTZjOGFkYjJjZGE3MTg2OTQyZWI5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC02MiwxNDUgKzYyLDE0NSBAQCBjbGFzcyBEZWNvZGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0
YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0
IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29t
YmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2Vn
bWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29s
IHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxl
TWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAg
ICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXko
KSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsK
LSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJl
Zik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVz
KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVu
dHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHku
Ci0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5z
dGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlv
biBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQot
ICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0
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
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
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShG
T1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBG
b3IgY3JlYXRlQ0ZEYXRhCisjZW5kaWYKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rv
cjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
JiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVj
dG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEo
KSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0
aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3
aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNv
bnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8g
VG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAg
ICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjA5LDEwMSBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0K
LSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEp
IHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1h
a2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7
CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1
ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29t
YmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMg
YWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFm
dGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VE
YXRhKCk7Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUg
eyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogCiAjaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlm
CiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhh
dCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFu
ZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGlj
IFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkp
OworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3Ms
IGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZv
aWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciog
ZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxl
TWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBV
U0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZE
YXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBH
UmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFz
T25lUmVmKCkpCkBAIC0yNjUsMjEgKzMxMywyMSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsK
ICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNp
emVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6
Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVlNDQ2NmNkM2YxNzE4OGEyN2MwY2RlMWVhOGE4
MDFiMDJhMjQ3ZDUuLmViNWNkYWI2YjE3MDU0Njk2MGQ3ZDkxYzM4ZjMzNTBlMTc0NmE3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKQEAgLTk1LDcgKzk1LDkgQEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4
dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wgaW5jbHVkZVNlcGEKICAgICAgICAg
bV9idWZmZXJQb3NpdGlvbiArPSBtX3NlZ21lbnRMZW5ndGg7CiAgICAgICAgIC8vIExldCdzIHBy
ZXRlbmQgYWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAgICAgLy8gRklYTUU6IFRo
aXMgY2xhc3Mgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YganVzdCBpdGVyYXRpbmcgdGhl
IHNlZ21lbnRzIG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgIG1fc2VnbWVudCA9IG1fYnVm
ZmVyLT5kYXRhKCkgKyBtX2J1ZmZlclBvc2l0aW9uOworICAgICAgICBpZiAoIW1fY29udGlndW91
c0J1ZmZlcikKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBtX3NlZ21lbnQgPSBtX2NvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSArIG1fYnVmZmVyUG9zaXRpb247CiAgICAgICAgIG1fc2VnbWVudExlbmd0aCA9IG1fYnVm
ZmVyLT5zaXplKCkgLSBtX2J1ZmZlclBvc2l0aW9uOwogICAgICAgICBpZiAoIW1fc2VnbWVudExl
bmd0aCkgewogICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKQEAgLTEzNCw3
ICsxMzYsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZQogICAgIC8vIExldCdzIHByZXRlbmQg
YWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBz
aG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBpZiAoYnVmZmVyUG9zaXRpb24gIT0gbV9idWZmZXIt
PnNpemUoKSkgewotICAgICAgICBzZWdtZW50ID0gbV9idWZmZXItPmRhdGEoKSArIGJ1ZmZlclBv
c2l0aW9uOworICAgICAgICBzZWdtZW50ID0gbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCkgKyBi
dWZmZXJQb3NpdGlvbjsKICAgICAgICAgc2l6ZV90IHNlZ21lbnRMZW5ndGggPSBtX2J1ZmZlci0+
c2l6ZSgpIC0gYnVmZmVyUG9zaXRpb247CiAgICAgICAgIGlmIChzZWdtZW50TGVuZ3RoID4gcmVx
dWVzdGVkU2l6ZSkKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSByZXF1ZXN0ZWRTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgK
aW5kZXggYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQxZTI1ZmQ0Yzc4MS4uNzNiMmI2YTc4
ZTA1NjRhNGVlZDg5M2E3MDFhNzA1MzM2NGVlZDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBTaGFyZWRCdWZmZXIqIG1fYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgc2l6ZV90
IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CiAgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsg
bnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3NlZ21lbnRMZW5ndGggeyAwIH07CmRpZmYgLS1naXQg
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
ZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVm
NzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYs
NyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQg
fHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGlu
aXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1
dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBv
YmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAg
ICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0
aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRo
ZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJ
ZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3
YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5
MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzks
OSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIg
PDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29k
ZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1
YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNi
NmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBA
IC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNz
ZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwog
ICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dl
dF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0
YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dl
dF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0
YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dl
dF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2
NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0
OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5L
ZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQg
ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZp
bmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdk
YWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVm
UHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxH
Qnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAg
ICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNf
bmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0g
ICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0s
IGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nh
c3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYzNDRl
NjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxGb250PiBGb250Ojpj
cmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2lu
LCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdp
biwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlm
aWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdp
biwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFs
aWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6
OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wg
c3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKIHsK
ICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJi
Yzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUz
MjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0
eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5v
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxv
cHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
LCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRp
YWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6
VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0
cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZv
bnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2Fj
aGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5k
ZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVj
ZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyArNzQsNiBAQCBp
bnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMg
Y29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5jZXMgc2hvdWxk
IGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0Owog
CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25E
YXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcg
aXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVt
b3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMy
ODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+
IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdU
Rk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9k
ZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAs
IG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlm
MTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0
ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVs
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmlu
ZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25z
dCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5n
LCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21p
bWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0
cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1v
dmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1
cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZl
NmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgw
YjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMy
X3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3Qm
IHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUo
KSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50
MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3
NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6
ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3
IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkK
IHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4
Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8
dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7
CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9T
Zm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAg
IGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0
NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4
ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNX
T0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9y
IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252
ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3Jp
dGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRX
T0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBj
dXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMs
IGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2Fz
IGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBz
ZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTEx
OTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4
ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNP
TiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIK
ICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpp
bmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0Nzlj
NmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNP
TlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcw
OSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRp
b25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNr
ZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFW
RShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRh
VHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
Zyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsK
ICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdp
dGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6
TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4
cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRv
JiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0g
ICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9u
cy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJl
Y3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAg
IGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1
ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9u
c2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3Bv
bnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRl
bnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEq
IGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3Mo
KSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRp
Zmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXli
YWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMu
aXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVj
dG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsK
ICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJz
dDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAg
ICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtl
eUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJp
bmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygi
cGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxv
YWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChX
VEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlE
c0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBj
b250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYz
ZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVk
QnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10p
KQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwog
CiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIu
Z2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklP
UklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5
Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdl
RGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxs
RGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
aW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5
NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBz
ZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFw
cGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtl
U2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4
NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRh
NDlhNjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiAgICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICBtX3BhcmVudC5uZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3Bh
cmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzOCw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVl
c3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAg
ICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVz
dC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
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
eCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1MGJkMjU3Li45NDRjNzFlNzA3M2U1
NjkxYWNmNTg3MjIwNDdhOTFiYzczZDA4MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBA
IC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxp
bmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBn
dWludCBtaWNybykKIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFw
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
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGUxYTIxYTI5NzQxOGI3YTUxNTgwMjgzZDU1OTA3
MDUwY2U1NTJiOTEuLmQ1NmIxOTg1MTQyNTc2YTc1ZTllZDExMWQwZjY3OTJmOWM2YTBiZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0z
NjQ0LDcgKzM2NDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlh
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
NDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMzUyYTMzZmNhNDEyMWYwOGEwZGNhYzRm
MjQ1YWZmNjJhMjZkYzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIEluaXREYXRhKGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAg
OiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lm
TmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQogICAgIHsKICAgICB9CiAKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBw
cml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
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
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
LjdmNGQwOTYyMDA1NjkxNjZkNzUxOTYzODkyYzg4OWRkNTI0Nzc5YzcgMTAwNjQ0Ci0tLSBhL1Nv
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
dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAK
ICAgICBpZiAoIWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
TlNEYXRhICpodG1sQXNEYXRhID0gWyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluSFRNTEZvcm1h
dCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CkBAIC01MDEsNyArNTAx
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
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3
NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRp
YyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3Rl
Ym9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3Rl
ZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNl
KCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICBy
ZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFz
dGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkK
ICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUlu
ZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4
dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0
YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5
cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9j
dW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0
dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdj
MjgwODEzMWYyMTRiOGRhLi4zYjI4YmJkMTAyNTBhYWNjMzNiNWRhYzBmMWRiYmNkOGI1ZTUxZDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQpAQCAtMTE2LDIzICsxMTYsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICAgICAgYXV0byB3ZWJBcmNoaXZlVHlwZSA9IGJyaWRnZV9jYXN0KGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgQ0ZT
VFIoIkFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQgdHlwZSIpLCBudWxscHRyKSkpOwogICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKKyAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOwogICAgICAgICB9CiAgICAgICAgIGlmICh3ZWJDb250
ZW50LT5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGRF07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKICAgICAg
ICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKKyAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRG
XTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgpKQog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5I
VE1MRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZUhUTUxdOwogICAgICAgICBpZiAoIXdl
YkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+
Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNs
aWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3Vz
dG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVu
dE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxl
c3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5n
ZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4u
MWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02
OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJv
YXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFk
b3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRm
b3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBh
c3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFtt
X3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAg
ICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVy
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21f
cGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlw
ZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJp
bmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAg
fSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRv
IHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0
KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0K
IApAQCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFj
YW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIg
PyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBA
IHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQ
YXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5k
ZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6
dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJv
YXJkQ3VzdG9tRGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtp
dGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAg
ICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JC
dWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCAzNzMxYTFhZDg1NGE2YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2Qx
OGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZjM2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWlu
dDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5n
dGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjph
c1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVt
ZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4
X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1E
YXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDgu
LjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRh
OwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQg
ewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0o
Ym9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2
Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlm
NTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246
W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7
Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxl
Z2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIu
LmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xv
c2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHBy
b2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRp
cGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQp
IHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRo
ZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0g
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5k
OwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxl
Ojpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5k
YXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQp
IHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBk
YXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVy
LnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBl
bmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0g
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIu
cmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4
MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3
ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1
Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5
IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNi
Njc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDgg
Kzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0
YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1v
cnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJs
LCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8g
dGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVt
cFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAg
ICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRh
LT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVt
cEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
LCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAg
ICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXgg
ODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1
ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUs
IDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1
Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlm
IChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVz
UmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFk
IGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2Np
aSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTll
OGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDEw
ICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEo
KSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250
aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAg
ICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lz
dGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNh
dGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwog
fQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAo
cmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5
NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRlMGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5
ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojps
b2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsK
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYm
ICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1f
ZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3Vv
dXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2RhdGEg
PSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAg
ICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50
b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
NGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNjOWQ1ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5
ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
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
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUw
NTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVy
aSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJl
cXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xv
YmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2Fu
UmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRk
NWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyAr
NDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAg
cmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
Owo=
</data>
<flag name="commit-queue"
          id="470220"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445091</attachid>
            <date>2021-11-24 05:45:23 -0800</date>
            <delta_ts>2021-11-24 06:27:22 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211125004519.patch</filename>
            <type>text/plain</type>
            <size>408973</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
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
ZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0x
MDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAg
ICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2
MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2NTU5ZGE0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYxMjEwNDA1
ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2VlNDBhODdl
MDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
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
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1MGY3MWMy
YzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVhZTY1NTA1
MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2
MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZi
ZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3
ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcw
OTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNk
YzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3
Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsy
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2
NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3OWFhN2Iw
MTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRi
MS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQKLS0tIGEv
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
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJj
N2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBI
b3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhp
cyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0
aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNr
cyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVm
ZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
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
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li45Njk2
ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBk
YXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpA
QCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+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
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkw
MWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjM1OTc1ZDI1NzU0ZmRhZGIxOGQ1
ZGYxODY4NDFiMjU4NjE3NmE5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhl
YWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0
YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0
LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBN
SU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRh
ID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5C
aXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBN
SFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBj
b250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
YXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3Vs
ZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhl
IHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1o
dCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAK
aW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1
NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAt
NDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkK
LSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZj
NjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3
Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVD
aGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBE
b24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0
IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTks
MTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRo
ZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90
aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBk
YXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91
bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
bWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2Vs
eSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJh
dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMy
YmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYx
MDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKIAogdm9pZCBDYWNoZWRGb250Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
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
YmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3
NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRz
TG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3Rv
bURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAg
IHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBp
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzEx
NDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRj
ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAK
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUlt
YWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERl
ZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5v
dygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VE
YXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0
YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAg
aWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlw
dFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0
KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3Jp
cHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmVi
ODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRh
KSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0
YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5
ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0
YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAog
ICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRh
dGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRh
dGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYg
KGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkg
ewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAg
ICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCks
IGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlDS19M
T09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggOGI4M2U1MzMxOTBhNzc2YmE4ZjQwYzI4MzE1OGNkYjc2MWFlOTcwMi4uYTEwNWUyYjRj
N2Q3NTRlMTliNzU1YTljYWM1NzRiZTgyODdhZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVw
bGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAg
ICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1
ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAg
IG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNj
ZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNv
dXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50
ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAg
IEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVk
ZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVy
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9s
YXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUg
Y2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRl
NTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1
bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVu
dCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51
cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50
LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1
NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApA
QCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAg
ICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0Zv
bnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9P
VEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0
ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFm
Nzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4
NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBA
IC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlh
bGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsK
ICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAg
IFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRF
bGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNl
dHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1
Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAg
dW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUw
ZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
CmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0
M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2Mywx
NCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRh
dGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2Fk
aW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUy
Y2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2Ew
N2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
Zik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNr
ZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZv
aWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVz
b3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7
IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVh
N2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRm
MmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
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
b3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5
ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMx
ZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9u
c2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlk
MmRhYzkxM2VmLi41ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6
dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hl
biBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRv
IHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxl
ZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgot
ICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
dXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDEx
YTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYs
NyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJp
YWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6
OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRv
Y3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5j
b2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7Cisg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUo
KSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4
dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJM
cy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyAr
MjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5v
bmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmco
c3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVu
Y29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRl
eHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1Rl
eHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwg
VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVS
THMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVt
ZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7
CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1
cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZj
YjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4
MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJM
IHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBk
Y2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURh
dGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2Rk
NTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNk
ZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFS
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNo
YXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNo
YXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9p
ZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xv
YWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7
CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlC
dWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmls
ZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAg
ICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIg
PT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAg
ICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUy
ZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0
ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lk
IGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhm
NzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVj
dCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsK
IGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJD
b250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAg
ICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
ICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5k
aWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTks
MTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9S
TShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAg
ICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBl
czsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgog
ICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0z
MjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJk
VHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0
IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlw
ZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJp
dHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0
aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5n
Jik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9j
b250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZk
Y2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9y
aWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2Vy
aWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAg
IGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3Ry
aW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVm
ZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1
c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4
IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1
NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmln
aW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdp
biA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5n
IHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2
ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFj
MmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3
ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAt
ODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVh
ZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVj
ZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBw
dWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlP
ckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3Ry
aW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlw
ZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsK
ICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4u
YmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBz
dHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3Rl
Ym9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JT
YWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVk
ZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4
MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdj
ODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVy
YXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCA0NzU0MmRhY2FlYjg2YTVjM2FlODhmZWI0ZGZhZjQ0OWZjM2VmYzM1Li5h
ZjVmOTRkYTcxYzEzZTdkZmRjMzU5YjIwNGYzNTNlNDFiYWY4YjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEp
CiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkg
fSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7
CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lm
IFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXpl
KCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1h
cHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVz
ZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFw
cGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1
Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAo
bWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkp
OwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBA
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0
CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJs
ZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAv
LyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBi
ZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAg
IC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAg
aWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmICht
X2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAg
aWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2Vn
bWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRz
RGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVk
RGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVm
ZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5z
ZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVm
ZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xNzUsNiArMTUwLDIxIEBAIFN0cmluZyBTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3Vv
dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAg
ICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTE5NiwxMCArMTg2LDEwIEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7Cisg
ICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5
KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsK
KyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNp
emUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjA3
LDIzICsxOTcsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZElu
dG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRh
U2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3Np
emUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Cit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6
ZSA9IDA7CkBAIC0yMzcsMTcgKzIzMiwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUt
Pm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUt
Pm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJl
ZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFw
cGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzIyLDgg
KzMxMiw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpo
YXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1
cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5z
aXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzI4LDU3IEBA
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
bnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcgKzM5Nyw3IEBAIGNvbnN0
IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citi
b29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4o
bV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0MDgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEo
KSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0NjIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9
IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzQ4MSw3IEBA
IHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1
cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1v
dmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhp
blNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkg
LSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzUwNSwyMSBAQCBjb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vn
bWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
Y29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAor
eworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQor
CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBS
ZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBb
c2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2Vn
bWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8v
IEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMu
CiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3ICs1
NDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2IxNzQz
YThkY2Q3NzI0N2FkYTFhYi4uOWQ1ZDE4MTMyNGQzMWI4OTQxNmM4YWRiMmNkYTcxODY5NDJlYjkx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSArNjIs
MTQ1IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91
bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2Jq
ZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsg
fQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFz
cyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAg
IGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxO
U0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNl
bmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEo
KSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7
Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJ
QikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdS
ZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkg
Y2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVu
dCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1
c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUg
Y2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRp
b24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkg
Y29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZv
aWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2Fm
ZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4g
ZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGll
cyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZl
ciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQot
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25z
dCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQot
ICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsK
KyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90Kigp
PiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAg
Ly8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNh
dXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9k
aWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAg
IGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdt
ZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29u
c3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJ
QikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVz
PiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAg
ICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25z
dDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAg
RGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQ
dHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAg
ICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNl
Z21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAot
ICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVy
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNp
ZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4g
Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAg
ICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0Uo
R0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxh
ciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRh
IGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQp
LgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVy
cyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVm
ZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
c2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChO
U0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cigpOwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9
IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
d2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjA5
LDUzICsyMDksMTAxIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZl
Y3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7
IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAg
Ly8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGlt
ZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24p
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAog
ICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVj
dGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0
YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNl
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRh
dGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdC
eXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMq
KTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9z
aXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQor
cHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRh
a2VEYXRhKCk7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlD
b25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRz
IGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChz
aXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3Ms
IFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFw
cGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBj
YWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisK
KyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1h
eVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9V
TkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0Rh
dGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShH
TElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBj
b25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0
cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NSwyMSArMzEzLDIxIEBA
IGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUg
PSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNo
YXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggNWU0
NDY2Y2QzZjE3MTg4YTI3YzBjZGUxZWE4YTgwMWIwMmEyNDdkNS4uZWI1Y2RhYjZiMTcwNTQ2OTYw
ZDdkOTFjMzhmMzM1MGUxNzQ2YTdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTUsNyArOTUsOSBAQCBib29sIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBjaHVuaywg
Ym9vbCBpbmNsdWRlU2VwYQogICAgICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IG1fc2VnbWVudExl
bmd0aDsKICAgICAgICAgLy8gTGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJs
b2NrLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgcmVtb3ZlZCBpbiBm
YXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMgb2YgdGhlIFNoYXJlZEJ1ZmZlci4K
LSAgICAgICAgbV9zZWdtZW50ID0gbV9idWZmZXItPmRhdGEoKSArIG1fYnVmZmVyUG9zaXRpb247
CisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyKQorICAgICAgICAgICAgbV9jb250aWd1
b3VzQnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIG1fc2VnbWVu
dCA9IG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpICsgbV9idWZmZXJQb3NpdGlvbjsKICAgICAg
ICAgbV9zZWdtZW50TGVuZ3RoID0gbV9idWZmZXItPnNpemUoKSAtIG1fYnVmZmVyUG9zaXRpb247
CiAgICAgICAgIGlmICghbV9zZWdtZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBtX3JlYWNoZWRF
bmRPZkZpbGUgPSB0cnVlOwpAQCAtMTM0LDcgKzEzNiw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcjo6cGVlayhWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCByZXF1ZXN0ZWRT
aXplCiAgICAgLy8gTGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgog
ICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIGp1
c3QgaXRlcmF0aW5nIHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgogICAgIGlmIChi
dWZmZXJQb3NpdGlvbiAhPSBtX2J1ZmZlci0+c2l6ZSgpKSB7Ci0gICAgICAgIHNlZ21lbnQgPSBt
X2J1ZmZlci0+ZGF0YSgpICsgYnVmZmVyUG9zaXRpb247CisgICAgICAgIHNlZ21lbnQgPSBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uOwogICAgICAgICBzaXplX3Qg
c2VnbWVudExlbmd0aCA9IG1fYnVmZmVyLT5zaXplKCkgLSBidWZmZXJQb3NpdGlvbjsKICAgICAg
ICAgaWYgKHNlZ21lbnRMZW5ndGggPiByZXF1ZXN0ZWRTaXplKQogICAgICAgICAgICAgc2VnbWVu
dExlbmd0aCA9IHJlcXVlc3RlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAppbmRleCBjOWY1YjA2ZmI0NjU2ZGMyZWFjZDQwNDQx
ZmYzNDFlMjVmZDRjNzgxLi43M2IyYjZhNzhlMDU2NGE0ZWVkODkzYTcwMWE3MDUzMzY0ZWVkNjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNoYXJlZEJ1
ZmZlciogbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29u
dGlndW91c0J1ZmZlcjsKICAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbiB7IDAgfTsKICAgICBj
b25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVu
dExlbmd0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFm
YTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5
YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0z
NDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlp
bmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBz
ZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAg
ICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVt
YmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFh
MTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQg
S2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2Rp
bmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENy
ZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NG
UHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzli
NzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgx
NjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJv
b2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMx
ZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5YWJiYzMyMGVmN2Y2Yzhi
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRh
dGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVu
dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2
ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25z
dAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGlmIChhdXRv
KiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYg
KGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1
YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBA
IFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3Mo
KQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZl
cikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRh
OiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1h
cFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVy
biBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlw
ZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1
NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4
MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0g
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2Vn
bWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwog
fQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05
OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAg
ICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0Rh
dGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJl
Zj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJl
Zj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBj
b21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwot
ICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nh
c3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcg
KzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFy
cmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERh
dGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtb
V2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMg
cG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlh
YThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4
NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNv
bnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVk
Li4zODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
Y29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlk
c01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250
aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRh
dGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNp
emUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2ln
bmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJ
ZHM7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGln
dW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRh
ID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKQEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAg
IC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcg
bWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNo
IGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9j
dGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGlu
aXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
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
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhk
ZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9y
aWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkp
OwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9u
dENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBj
dXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNl
RGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4u
ZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVG
b3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAg
IFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0g
T3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUx
OTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNy
ZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUg
d2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250
RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQw
OGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5
ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1f
ZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkK
ICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEu
LjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2Rl
bD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3Ry
aW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0
OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRy
PE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVs
KFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2
MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4o
bV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
LCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsK
IH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSks
IFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpj
cmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3
M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
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
YXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFj
NGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwx
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVy
IGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09G
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdP
RkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50
IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhl
cndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQu
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZl
ciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBz
dXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRy
dWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxz
LAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRh
OS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRp
YyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJh
c2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZl
ci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVh
MGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJl
ZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBj
b250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAg
ICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5h
bWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlk
ZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERB
VEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNO
YW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
aW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0
cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBb
TlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3Ry
aW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJv
cjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheSht
X2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBk
YXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQ
QUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElk
ZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAg
ICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
UEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0
aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5n
IHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMu
Zmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJl
c3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAg
ICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRl
bnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVu
dEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAK
ICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFj
ayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2Vz
cyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRL
ZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5
YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1Zl
Y3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0
YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNl
c3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVy
OwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3Qo
cmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBA
dHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVu
dGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAg
ICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3Ig
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7
CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAg
ICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRv
JiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9
IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlE
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwor
ICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAg
ICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
cGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAg
IHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAt
MTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChh
dXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAg
ICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmly
c3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92
ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
bmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
cjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdCht
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3
NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1Njhm
ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
QEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2Fk
ZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9u
KFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107Cisg
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxv
YWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3Nl
dCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9u
SGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAt
NjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0
YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0Fs
bERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4
M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0
YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3Bh
cnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkp
CiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxh
Z3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNk
NzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcg
QEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIu
Z2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZm
ZXIpOwogfQogCkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4
LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERh
dGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6
OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAg
ICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
bWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGYxNjA3MTViZGE3NzU5ODkwMTMzNmI2M2M5NTY3
YzAzMjUwYmQyNTcuLjk0NGM3MWU3MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJjNzNkMDgxMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihn
dWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTgyLDcgKzE4Miw3
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
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZTFh
MjFhMjk3NDE4YjdhNTE1ODAyODNkNTU5MDcwNTBjZTU1MmI5MS4uZDU2YjE5ODUxNDI1NzZhNzVl
OWVkMTExZDBmNjc5MmY5YzZhMGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NDQsNyArMzY0NCw3IEBAIHZvaWQgTWVkaWFQbGF5
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
Li4zNTJhMzNmY2E0MTIxZjA4YTBkY2FjNGYyNDVhZmY2MmEyNmRjM2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGlj
OgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAg
ICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAg
ICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3Vv
dXMoKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRl
ZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1
NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBG
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQu
Z2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9u
dERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
YnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2Jj
NjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3Vt
ZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3
ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1f
ZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9w
dE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIu
LmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaXRh
bGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3JkIGl0YWxp
Y3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3VudCBpdGFs
aWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2
X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB1
aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
bWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
byogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0
IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRlbmRlciA9
IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNz
ZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmcGFydFJl
Y29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3Ry
dWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZhbmNlTWVh
c3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhlcmUgYXJl
IHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lkIGdldFNp
emVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFy
aWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBpZiAoIWlz
VmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkKQEAgLTE1
Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsK
ICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbaV0udmFy
aWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4m
IGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFz
c2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlwaEFzc2Vt
Ymx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4oYnVmZmVy
LCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMgOiBUYWJs
ZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5cGhDb3Vu
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbMV07
IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rp
b25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMu
CiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlv
bihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNh
bCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0
cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBo
LCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBjb3VudCA9
IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFsR2x5cGhD
b3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhDb25zdHJ1
Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1BVEhUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZvT2Zmc2V0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAgY29uc3Qg
TWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0y
MTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlw
aEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEds
eXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5cGhJbmZv
T2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0cnVjdCBN
QVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYx
NDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5U
eXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0x
MzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhi
VW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
CmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1
ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAg
LTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3Qg
VGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJf
dCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90
KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBi
dWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAg
LTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNl
IHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVu
ZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVp
bnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCog
dmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50
MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4o
YnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsK
ICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJh
Z2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292
ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRl
eChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJh
Z2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29s
IGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3Zl
cmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJh
Z2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2
YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
RU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRo
ZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0
byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFi
bGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJs
eSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEp
Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERh
dGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAg
ICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhl
YWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcg
Zm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRh
OwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnRE
YXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgz
MGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcy
YzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVz
b3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1S
ZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMw
MjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMx
MDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApA
QCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNv
dmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJs
ZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9v
a3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZz
ZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBm
aWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVk
IGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgs
IEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29s
IGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQs
NyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQx
NiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAK
LSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVp
bnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBp
ZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tj
b3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJh
c2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9u
cyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+
KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjks
NyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6
T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFs
aWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1
Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBp
IDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1
NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJ
bmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFn
IGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5U
eXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3Jp
cHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09m
ZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFu
Z1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29y
ZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2Ny
aXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkp
CkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNj
cmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRU
YWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAg
ICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkK
QEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBd
LnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJs
ZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAg
LTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBs
b29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2Ny
aXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVM
aXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQp
OyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVy
LCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3Qo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1
ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0K
IAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAg
ICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZm
ZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6
VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAg
ICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBA
IC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxG
ZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsK
ICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBz
dHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJs
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4m
IGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAg
IGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJs
ZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
CiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRh
YmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJs
ZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFU
YWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+
KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2
LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+
Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZl
ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5
YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0
MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcg
KzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVy
biBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0
cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVz
b3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5
NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBD
R0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZv
bnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2Ew
MGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyAr
ODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4g
Zm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJp
bmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
YWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJh
NWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29s
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40
MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRm
b3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAg
ICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsK
ICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAg
IERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRh
KGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2Vs
ZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAz
MmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRl
OGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAg
LTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRh
KCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRo
YW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlS
ZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYo
KTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6
OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEg
PSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFh
NGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
c3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAg
ICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykK
K3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0g
aW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0y
NDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0
dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2
LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rl
cjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBF
R0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5
NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENN
UykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwor
ICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0
ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0ZDA5NjIwMDU2OTE2NmQ3NTE5NjM4OTJjODg5
ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1h
a2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYg
KE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVd
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQo
Y29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAg
aWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFy
Y2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEo
KTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7
Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNL
ZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9i
amVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0p
CisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNL
ZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9i
amVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC00
ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJURkRG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZUZs
YXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKKyAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJU
RkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1MRm9y
bWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0RhdGEgKmh0bWxBc0RhdGEgPSBbKE5TU3RyaW5n
ICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
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
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
IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjNiMjhiYmQxMDI1MGFh
Y2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMTYsMjMgKzExNiwyMyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIHdlYkFyY2hpdmVUeXBlID0gYnJp
ZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2Fy
ZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKKyAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRG
b3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQ
YXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRGRm9y
bWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0
YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5
cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAgICAgICBpZiAoIXdlYkNvbnRlbnQtPmRh
dGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRU
eXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0Lmlz
TnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50
LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250
ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5s
ZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVz
c0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAg
ICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNl
dE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3Ry
aW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAK
ICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4
YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUz
ODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFr
ZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJk
VHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5
XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkg
Y29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAg
IExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEg
KnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5v
cmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEu
b3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0
eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRh
LmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBh
dXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcg
KzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3Rv
bURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0
YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2Fy
ZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21f
cGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
OiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBp
ZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNv
dW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVG
b3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVi
b2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAt
NDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEg
KmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9
IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUw
NSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBh
c3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3Ry
aW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
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
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4
NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4
M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRl
R2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnko
ZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEt
PnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1P
YmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxI
RHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAg
ICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQg
d3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAg
ICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdy
aXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0
dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0
ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VI
YW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkK
ICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVh
OGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00
NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFk
ID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0
TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERX
T1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5k
YXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRl
c1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVy
cm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4
IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2Rk
YmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8g
YnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNB
cmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5n
KHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhT
dHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUlu
c3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmlj
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRp
ZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgp
KTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxi
YWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQi
KSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5z
aXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBT
dHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmco
ImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApp
bmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUwYWIzOWI5
ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUgQEAgdm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0YSkgewot
ICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygp
KTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAg
ICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNE
YXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9y
T2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRk
NzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBw
cm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJl
c3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAg
IFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRh
KSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZd
IChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQt
PmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmlu
aXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApp
bmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNl
YmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0x
MjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBG
SVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRv
IGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmls
ZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShz
Y3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNl
RmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZp
bGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpj
bGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhh
YmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1
YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xv
YWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
OwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNv
dXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1
ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0
OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMo
Y29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0
YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1
ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lk
IFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90
ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0
aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+
ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigp
OworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2lu
dGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4u
Yjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0
RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3Jl
YXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUy
ZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNp
emUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRi
YTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBD
YWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwg
Y29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VC
b2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAg
ICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9
IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25h
bDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3Zl
KHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUo
KSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsK
IAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2
YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2
MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0
b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAg
IERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAg
ICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZl
ci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAg
ICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkg
PSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZl
ci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVy
biB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUz
MGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYxNDYyNjZiODgy
ODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
ICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJj
MTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFk
NjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0g
ZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0K
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAgICAgU2hhcmVk
QnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChi
dWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7
IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdi
NjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25z
dAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0g
c2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAg
ICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90
KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3Rl
Y3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43
NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2ln
bmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5
NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNo
aXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVh
c2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEy
NDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNv
IHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4K
LSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgp
LT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRh
LnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBl
OWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4
MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
QmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxk
IGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0
YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQy
ZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1
MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAK
QEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9j
YXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBzdGF0aWNf
Y2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSBy
ZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKCkKLX0KLSAgICAKLXN0
YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVh
bGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIENGQWxsb2NhdG9y
Q29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJjZSwKLSAgICAgICAgTlVMTCwg
Ly8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAgICAgICAgTlVMTCwgLy8gY29w
eURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRlCi0gICAgICAgIE5VTEwsIC8v
IHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlLAotICAgICAg
ICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAgIHJldHVybiBhZG9wdENGKENG
QWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7Ci19Ci0jZW5k
aWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJl
ZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVk
QnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQotICAgIGF1dG8gZGVhbGxvY2F0
b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8g
Y2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRv
ci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkp
OwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRh
KSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVm
KCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRl
cy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBu
dWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1d
KCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlz
IH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8
U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhp
cyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEwNCw3IEBAIFNoYXJlYWJsZVJl
c291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9y
eSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJj
ZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkgPSBkZWZh
dWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5k
bGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNp
emUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMy
ZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRm
NjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAt
MzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZVJlc291cmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKK2NsYXNzIFNoYXJlYWJs
ZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNl
PiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRs
ZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCwxMiArODAs
MTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8
U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIo
KTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCi0gICAgdW5zaWdu
ZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAKKyAgICBjb25zdCB1bnNpZ25l
ZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2YWVjYmQxOWJiNjRkN2IuLjY3
YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRl
Y29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAg
ICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkK
QEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNo
YXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7Cisg
ICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVy
U2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNv
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
bmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2
MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNv
cjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApp
bmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFk
YWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8
Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3Jl
YXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNl
RGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQz
ZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikK
K3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRl
eCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2Rk
ZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVX
cmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAt
ODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29s
IGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJ
bWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hh
c0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApp
bmRleCAzYzc5YjQxOTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5
MDQxNzA2ZjhjNzlkMTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVu
Y3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYg
ZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWlu
dDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMz
MDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6Omlz
RW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBl
ckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxl
V3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlh
bGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6
OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0
NGNlNjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAo
dm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGln
aGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0
LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBw
SGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hp
Z2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxp
Z2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dy
b3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmll
dzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGln
aGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6
OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZElu
QXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5k
ZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0
MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJj
NzIwZGRlODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVh
NzIxMDAwNmEzMThlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0
YVNpemUpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0
ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0NoYW5n
ZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JU
eXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250
ZW50c09mUGFzdGVib2FyZChjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFu
Z2VDb3VudCwgbmV3Q2hhbmdlQ291bnQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdD
aGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRh
NzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29s
IFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4Omld
IGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9i
amVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
W3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5
cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcw
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6
SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmls
ZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAK
ICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVC
dWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0
KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0Vx
dWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1E
YXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBO
U0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5h
dGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAg
ICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVy
cm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVz
dERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8K
ICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05T
UGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3Jp
Z2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNz
VG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAg
ICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JH
ZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMx
M2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJm
M2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00
NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVu
dCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1Zp
ZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVT
aGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dE
YXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91Ymxl
VGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBj
YjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5
NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxl
Y3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBT
dHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZl
VGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdi
ZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0y
MTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkg
ewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEp
Ci0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNp
emUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAg
ICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMx
NmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAg
LTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlv
bkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnko
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0
aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIu
LjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICsz
NTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURh
dGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRv
U2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCBhOGU5MGU0MjlhNmVjZTEzNjg3YjlmOTFiYzczODJjYTdjYjBmZjNkLi42
NWU1ZDgyYTM1N2JjYmFhZjk1MDkwMzg1ZDJhZWRhMmVkZjM0MjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6
KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxs
Q3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6
QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDpp
bmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2Fy
ZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9y
aWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4g
WUVTOwogICAgICAgICB9CkBAIC02NTk0LDcgKzY1OTQsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0
ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNv
bnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU2NSw3ICs3NTY1LDcgQEAgLSAo
dm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lz
dGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIElt
YWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1h
Z2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsg
ZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNl
bnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUs
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0
YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndl
YlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2Zj
ZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4
MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUKICAgICBpZiAoIXNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVm
ZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7
CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZl
cihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFnZUNsaWVudCgpLnNhdmVJbWFnZVRvTGli
cmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVl
NTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAg
LTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
ICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAg
ICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxl
LmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICBhdXRvIHNoYXJlZE1lbW9yeUltYWdlID0g
U2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUltYWdlKQogICAgICAgICBy
ZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVT
aGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFy
ZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5k
YXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAg
ICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFy
ZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhcmNoaXZlQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNo
YXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2ZUhh
bmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNoaXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5QXJj
aGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpOwogICAgIH0K
ICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUs
IFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdn
ZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVS
TCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2luSWRlbnRpZmllcik7CiB9CmRpZmYgLS1n
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
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
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRm
ODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUuLjI5NGMyNDA3MmRiZmU5N2QwYzY1N2I5Y2Y4ZTYxMGM2
YTFiNGM3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIg
KzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlk
ZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0
ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92
ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdl
YlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRh
Rm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZl
cikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRl
QnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5n
IHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJgogICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEo
KSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKQEAgLTQwNCw3ICs0MDYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7
CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlw
Y0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNo
YXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUw
NjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi5lYTg5NTJkYjU5MTdmNDE3ZmI2NWEzMThjZjM3
ZWM1ZWVhYWRiYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1
Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC04OSw3ICs4OSw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0
MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEy
YjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Ug
PSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFn
ZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsx
NjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0
YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFh
cmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNi
MTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2Fj
MzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgp
IGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRh
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5n
KCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkp
OwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ1OWNmYTcx
MDZmMDg0NDJlM2ZiMzk5M2IxYTg4MDg4MWY3YmEzNi4uOWI5YTk4NmMwYzk2YTgzYWNmNWI4Mjll
NzM2MzkwNzE3NTVjNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTc3MzUsNyArNzczNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQ
CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9B
cHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRl
eCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAg
ICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0Fw
cEhpZ2hsaWdodChzaGFyZWRNZW1vcnktPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0
YVNpemUpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGln
aGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRj
NjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFi
MDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1
MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUp
OwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAg
IHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhB
VkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
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
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThh
ZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUy
OTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
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
bmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZl
ciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVu
Y29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNv
cmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBj
b3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0
YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9y
eVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxN
ZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5
NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBA
QAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+
IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0p
OwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxP
TkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5
MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZl
OjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0
YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEu
LmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUz
ZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVh
ZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcg
KzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElT
dHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5F
WFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRh
dGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVw
cmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
aW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5
YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291
cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAK
LVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
bWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVl
MzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMz
OTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDFiZDVkNTM4MjA1NWM5MjcxOTU3OTY3ZTVmYmZiZTI2MmFlOGY2
YzQuLjczYTk2MmJkNDk0ZTlkMWQxZDM1NGM1ZDc5ZjVkYjgyOTBmMWM0NGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0xMS0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMg
b25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4
IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLmExMTVkNGJlMWZiYjYz
ZmU1OGY1OTIxYTRlMTU5OTM5ZWY3YjZjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MCwzOCArNDAsMzggQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAg
RVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdF
bXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9O
T1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBi
dWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNp
emUoKSk7CkBAIC04MCwxMiArODAsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFy
QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFT
U0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
YnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9F
USgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0x
NTYsNyArMTU3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5n
dGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25l
LT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNs
b25lLT5zaXplKCkpOwogfQpAQCAtMTcyLDMwICsxNzMsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0g
eydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAn
YScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2Yn
LCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywg
J2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
czIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0g
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1
b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5k
YXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gx
LnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIp
OwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAg
ICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZm
ZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNo
ZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBj
aGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEo
Z2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gx
LnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCks
IGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMDcsMTUgKzIxMSwxNSBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVm
ZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVD
VF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVu
ZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEo
YnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYics
ICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsn
YicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdk
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5n
ZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3
Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5Zjhk
YTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
d29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0
YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBh
dGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgo
KV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="470224"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445095</attachid>
            <date>2021-11-24 06:03:52 -0800</date>
            <delta_ts>2021-11-26 00:51:18 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211125010349.patch</filename>
            <type>text/plain</type>
            <size>413908</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uYTM2OTJiYmJkMzJlMzA1NTUxMzU1YTQyM2ZiNmNh
ZTllNDgzOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMS0xMS0yMiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGV4aXN0aW5nIGJl
aGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhS
ZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xh
dGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5
UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJv
ZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURh
dGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0lu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlG
aWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNv
dXJjZTo6bG9hZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0
dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJk
VHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxl
V3JhcHBlckZvclVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1
bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpk
b1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBh
cnRDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBj
b25zdCk6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJE
YXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0
ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2Vn
bWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21l
bnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
cmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVm
ZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAq
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
Ojpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6
bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTExLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKCkgdGFrZSBhIGNsYW1waW5n
IGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhZGZlYzZmZmY0YmU2OGVjNGFjZDMzYTkxMmI0YmI5NTNh
NmFmZWEuLjJhMzVmOWYyZDhhMDc2NmVmZDg4NDBmYzRhNjc4OTdhMWQ5ZGI3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTk0IEBACisyMDIxLTExLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3Jh
cEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNB
bmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlBy
b21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxs
UGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0
aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGll
bnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKKzIwMjEtMTEtMjEgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBhbGxvY2F0aW5n
IGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQwMQor
ICAgICAgICByZGFyOi8vODU2Mzc3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgd3JhcCBhIFNoYXJlZE1lbW9yeSBpbnRv
IGEgU2hhcmVkQnVmZmVyIHVzaW5nCisgICAgICAgIFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGluc3RlYWQuCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
ciBvdGhlciB0aGFuIHRvdGFsIG1lbW9yeSBzaXplIHJlZHVjdGlvbi4KKworICAgICAgICBGbHkt
YnkgZml4OiBjaGVjayBmb3IgbnVsbCB3aGVuIG1hcHBpbmcgYSBTaGFyZWRNZW1vcnkgdG8gYW4g
SVBDIGhhbmRsZQorICAgICAgICBpbiBhIGNvdXBsZSBvZiBzcG90cy4KKworICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJl
c291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBSZWZhY3RvciBtZXRob2QsIHJlbW92aW5nCisg
ICAgICAgIHBsYXRmb20gc3BlY2lmaWMgY29kZSBhbmQgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIGluc3RlYWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICBIYXJkZW5pbmcgY29kZSwgY2hl
Y2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIEhhcmRlbmluZyBjb2Rl
LCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1v
cnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjov
Lzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZl
ciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFk
LgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0
b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sg
Zm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAg
ICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaDogTWFrZSBTaGFyZWFibGVSZXNvdXJjZSB1c2UgdGhyZWFkLXNhZmUgcmVmY291
bnQuCisgICAgICAgIEEgU2hhcmVhYmxlUmVzb3VyY2Ugb25jZSBjcmVhdGVkIGlzIGltbXV0YWJs
ZSBhbmQgdGhlIFNoYXJlZE1lbW9yeSBvYmplY3QKKyAgICAgICAgaXRzZWxmIGhhcyB0aHJlYWQt
c2FmZSByZWZvdW50aW5nLiBEZWxldGluZyB0aGUgb2JqZWN0IG91dHNpZGUgdGhlIG1haW4gdGhy
ZWFkCisgICAgICAgIGlzIHNhZmUuCisgICAgICAgIE1ha2UgbWVtYmVycyBjb25zdC4KKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1v
dmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50
OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNv
ZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5p
bmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJl
bnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmU3MWFkMzgyZTI3YzgzMGE1MjVhZDk1MGYzMzNmNDlh
MmUxNWNjYy4uY2U1MGNlY2EyNTk0ZGE1ZWYxMzdjZjNiNmZiMzk1OWU5NGE0OWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTIyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTE2ICBOaWtvbGFv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBU
ZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1
ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBi
ZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFy
a3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlh
ODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0
MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2
ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlT
aXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7
CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQg
PSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDkw
OThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3MDNmMDEzYzEz
Y2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmst
PnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92
ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYg
cmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0g
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0
T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0
aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0
KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYg
aW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAg
ICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0ZDMwZTQw
MDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFh
ZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApA
QCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQg
cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNo
UmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
LCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwogCiAgICAg
ZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4
YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNw
b25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAg
IH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3Bv
bnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYo
KTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEyYTA3MGZj
ZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2Nk
YmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25B
bmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNo
ZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVy
cywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9S
VCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0
NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVk
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURC
dWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBr
aWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmlu
ZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZmYjVmMmVk
ZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7
CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNv
bnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+
PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBh
aXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJh
eUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAwMjFmNmUxZmRl
YzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1NzFlNzAxZjU2
ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBGZXRjaEJv
ZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBmb3JtRGF0
YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZVdp
dGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtlIHdlIGRv
IG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4gRmV0Y2hC
b2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkKICAgICAg
ICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwogICAgIGlm
IChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkK
ICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVy
biBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygp
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCku
Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5
QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4xMjZiNTM4
NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250
ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAg
ICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9i
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAg
bV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJjZTI4OGNlZGMw
MjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRiYWM1ZDMxMDBj
ODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsK
IH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURhdGEo
V1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThjY2ViMWQ4Yzk0
Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwo
KSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51
bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJl
c3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJv
ZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5
U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUy
ZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtNTIs
NyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQw
NGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVpbnQ2NF90IGhp
Z2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0
dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
YnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1
ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0
ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkK
IHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtMjgy
LDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50OF90PiYgZGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5hcHBlbmQoU0lE
QktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEsIGNvbnN0IHVp
bnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXgg
NjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIzNzAxZjBlZjQ0
OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zMiwx
MCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIGJvb2wgZGVz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CiBi
b29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgw
MzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RT
dG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgh
a2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpA
QCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNS
ZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBp
bmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1
ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhp
c3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsK
QEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQg
aW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBr
ZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3
ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51
cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRh
OjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29y
ZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYm
IGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJ
bmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4
LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAw
OwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5
RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRv
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFs
b3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJL
ZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJh
bmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVy
YXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4
ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2
ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJs
b2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtl
eSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nhcnko
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0
ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThjNGZkZWU2MmI5
NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1Nl
bmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1l
c3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1l
c3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAK
ICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTli
MjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3aXRjaE9uKG1l
c3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAg
ICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZd
KFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggYWU3YjJl
MmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdlZWNkOTE3YzFm
NjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUg
PSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1
b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAg
IGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdp
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
ZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0x
MDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAgICAg
ICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAg
ICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICBtX2RhdGFCdWZmZXIg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2
MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMxNzk3NGYyNzE1NzQ2NTU5ZGE0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxk
VHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAg
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAg
ICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3ZGYxMjEwNDA1
ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4MTMyZDM3ZTAwM2VlNDBhODdl
MDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
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
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggYzNkODQ1MGY3MWMy
YzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFiZTViYTQ5MjgwNmVhZTY1NTA1
MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBB
U1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNl
ID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9
ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNv
dXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEt
PmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVh
ckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURh
dGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpt
YXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
Y29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2Fk
aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2
MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZi
ZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNz
IENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBD
b250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTIyOCw3
ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9w
QXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNo
aXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNoaXZlPiBt
X2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
ICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25vd3NBYm91
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcw
OTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0
VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29u
dGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNv
dXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNk
YzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3
Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsy
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNo
YW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2
NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlmYWRmN2I3NTQ3NmI3OWFhN2Iw
MTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
MTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1S
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVS
ZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVl
c3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5LDcgKzMxNDksNyBAQCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
OwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNs
aWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVy
cm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1f
ZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExp
a2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVy
OjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRi
MS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhiMGM2NSAxMDA2NDQKLS0tIGEv
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
Y2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0ZjUxZmIyYjc4ODA1ZTBiZjJj
N2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBI
b3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhp
cyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0
aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNr
cyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVm
ZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
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
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li45Njk2
ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBk
YXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5i
aW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQt
PmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAg
ICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpA
QCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+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
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkw
MWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjczMzZiMzdkZTNiZGRkYTZmYTNk
Zjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhl
YWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNh
c2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNl
NjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRv
IGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAg
IExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRl
ciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRl
cjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2Rl
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3Rl
ZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0OgogICAg
IGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFy
dC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29u
dGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVs
YXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBt
ZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0g
dG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1
MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFlNTc2YTJiOTA4
ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQyLDEwICs0
MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
IG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQy
Zjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcyNzI3NjdlNTNm
YTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50
LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2Fj
aGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNl
IHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZy
b20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5LDE1IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUg
bmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFj
ODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2MTA3YTQ2MzBj
MDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
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
M2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5
NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOwog
ICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQs
IGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2aXJ0dWFs
IFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3Vz
dG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBj
b25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3RvbUZvbnRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgY2Fs
Y3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0
ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFkYzg5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NzAsNyAr
NDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogCiB2b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0g
ICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwog
ICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwog
CkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0
ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1f
bGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tv
ZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJ
bWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlz
UG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJj
ZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9S
TShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRh
VG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNl
bHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBp
ZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBE
Ri4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUy
MDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRh
KCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlk
NzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTkyNGJkMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEg
PSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAKICAgICBhdXRv
IHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChkYXRhLnNpemUo
KSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1l
bnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDhi
ODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0YzdkNzU0ZTE5
Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFt
X2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiAg
ICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Rh
dGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAgICBtX2RhdGEg
PSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApp
bmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5jY2U1ODAxYWVj
N2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAog
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
bmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kZTU3ZjQwNDAz
NzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVs
b25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwot
ICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29u
dGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2
N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJu
YWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAg
IHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCkBAIC05MSw3ICs5
MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVu
dCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgq
bV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9l
eHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1
M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRl
cm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZH
Rm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVS
SSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8
U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCog
bV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4g
bV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uZWVkYjZi
MzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBAIHVuc2lnbmVk
IENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRh
dGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1
ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00Myw3
ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRleHRUcmFjazo6
ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAg
bV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBl
M2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYwNDNmNDlkY2Ew
MjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMsMTQgQEAgU3Ry
aW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9pZCBDYWNoZWRY
U0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
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
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
Q29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNh
NTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3Njdk
Y2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5k
aWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggNDc1NDJkYWNhZWI4NmE1YzNhZTg4ZmViNGRmYWY0NDlmYzNlZmMzNS4uYWY1Zjk0ZGE3
MWMxM2U3ZGZkYzM1OWIyMDRmMzUzZTQxYmFmOGIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDog
bV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92
aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlk
ZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCitT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNpZiBVU0UoR1NU
UkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFw
cGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZm
ZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZt
YXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwot
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQog
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBAQCBzdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hh
cmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0
IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3Zl
IGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0
aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hh
c0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3Nl
Z21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1
b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9z
ZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29w
eVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9z
ZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0p
OwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+
ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29w
eURhdGEoKSBjb25zdApAQCAtMTc1LDYgKzE1MCwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0
b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
IH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJl
dHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0xOTYsMTAgKzE4NiwxMCBAQCBSZWZQdHI8
QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hl
Y2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAg
ICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIwNywyMyArMTk3
LDI4IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRh
dGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpA
QCAtMjM3LDE3ICsyMzIsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21l
bnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21l
bnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
ICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTMyMiw4ICszMTIsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzM5LDcgKzMyOCw1NyBAQCBib29sIFNo
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
IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM1OCw3ICszOTcsNyBAQCBjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRh
U2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRh
YmxlRGF0YSk7CiB9CkBAIC0zNjksNyArNDA4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAg
IHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXpl
KCkgfX07CiB9CkBAIC00MjMsNyArNDYyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9y
PT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90
IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1h
a2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNp
emVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ0Miw3ICs0ODEsNyBAQCBzaXplX3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6
dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
IHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21l
bnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50
KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRp
b25XaXRoaW5TZWdtZW50KQpAQCAtNDY2LDE2ICs1MDUsMjEgQEAgY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK2NvbnN0IGNo
YXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQs
IGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNp
emUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxvY2F0
ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAgIGNv
bnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MDEsNyArNTQ1LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDM5NTNiMTEyYmIxMTA3NTBhN2NiMTc0M2E4ZGNkNzcy
NDdhZGExYWIuLjlkNWQxODEzMjRkMzFiODk0MTZjOGFkYjJjZGE3MTg2OTQyZWI5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02MiwxNDUgKzYyLDE0NSBAQCBj
bGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJl
ZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGlt
bXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisv
LyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21l
bnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRh
U2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xhc3MgTWF5VXNl
RmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNo
cmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4g
Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZv
aWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdC
eXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBh
bGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhl
eSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVn
aW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0
ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBv
c3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFy
KiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0Owor
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5
aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBT
aGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91
dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAg
dm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lk
IGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3Ry
dWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsK
KyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEg
d3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBj
YW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBj
b21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBE
YXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQor
ICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rp
b248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2Vu
ZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3Rk
Ojp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdt
ZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwK
ICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRl
cz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
ICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNl
Z21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFBy
b3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCisjZW5kaWYKK307CiAKLSAgICAgICAg
c3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQorCisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29w
eURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFk
IHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBW
ZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlC
dWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAg
ICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBh
IGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICop
OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENG
RGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAot
ICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3Jl
OjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNp
bmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVj
dG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIwOSw1MyArMjA5
LDEwMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAg
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2lu
IGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXpl
X3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lk
IGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQog
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNl
bmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5k
aWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6
CiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1
cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQot
ICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBt
X3NlZ21lbnRzOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgp
OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMg
YSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50
IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFz
aXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4u
KEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0
YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24g
YSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVkIGZy
b20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51
bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxl
TWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04p
CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENG
RGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRh
KCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjUsMjEgKzMxMywyMSBAQCBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3Np
dGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXpl
ID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRC
dWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRh
QXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNF
KEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAg
ICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVlNDQ2NmNkM2Yx
NzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUuLmViNWNkYWI2YjE3MDU0Njk2MGQ3ZDkxYzM4
ZjMzNTBlMTc0NmE3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTk1LDcgKzk1LDkgQEAgYm9vbCBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wgaW5j
bHVkZVNlcGEKICAgICAgICAgbV9idWZmZXJQb3NpdGlvbiArPSBtX3NlZ21lbnRMZW5ndGg7CiAg
ICAgICAgIC8vIExldCdzIHByZXRlbmQgYWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2Yg
anVzdCBpdGVyYXRpbmcgdGhlIHNlZ21lbnRzIG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAg
IG1fc2VnbWVudCA9IG1fYnVmZmVyLT5kYXRhKCkgKyBtX2J1ZmZlclBvc2l0aW9uOworICAgICAg
ICBpZiAoIW1fY29udGlndW91c0J1ZmZlcikKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZl
ciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBtX3NlZ21lbnQgPSBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSArIG1fYnVmZmVyUG9zaXRpb247CiAgICAgICAgIG1fc2Vn
bWVudExlbmd0aCA9IG1fYnVmZmVyLT5zaXplKCkgLSBtX2J1ZmZlclBvc2l0aW9uOwogICAgICAg
ICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewogICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxl
ID0gdHJ1ZTsKQEAgLTEzNCw3ICsxMzYsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXI6OnBlZWsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZQogICAg
IC8vIExldCdzIHByZXRlbmQgYWxsIHRoZSBkYXRhIGlzIGluIG9uZSBibG9jay4KICAgICAvLyBG
SVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJh
dGluZyB0aGUgc2VnbWVudHMgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KICAgICBpZiAoYnVmZmVyUG9z
aXRpb24gIT0gbV9idWZmZXItPnNpemUoKSkgewotICAgICAgICBzZWdtZW50ID0gbV9idWZmZXIt
PmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uOworICAgICAgICBzZWdtZW50ID0gbV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbjsKICAgICAgICAgc2l6ZV90IHNlZ21lbnRM
ZW5ndGggPSBtX2J1ZmZlci0+c2l6ZSgpIC0gYnVmZmVyUG9zaXRpb247CiAgICAgICAgIGlmIChz
ZWdtZW50TGVuZ3RoID4gcmVxdWVzdGVkU2l6ZSkKICAgICAgICAgICAgIHNlZ21lbnRMZW5ndGgg
PSByZXF1ZXN0ZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggYzlmNWIwNmZiNDY1NmRjMmVhY2Q0MDQ0MWZmMzQxZTI1
ZmQ0Yzc4MS4uZjdjMjNlYmM0NmY0MWRmOTA0NDBkYTMzYWQ3M2Y3NDA3NmQwM2VkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIHsKQEAgLTU5LDYgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBzaXplX3QgbV9idWZmZXJQb3NpdGlvbiB7
IDAgfTsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6
ZV90IG1fc2VnbWVudExlbmd0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpp
bmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5
NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYg
KG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+
aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBl
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIs
IFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIx
MzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2
LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2su
cmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6
ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlBy
b3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFy
eS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2
YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5
OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29k
ZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZp
bmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVz
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2
b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2
MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmExMmE3NDFhNTcwMjU5ZmMyMjhhNmQ5YWJi
YzMyMGVmN2Y2YzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
Q0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBt
b3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25s
eSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJ
T04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNv
bnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhl
MjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwx
MSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGlj
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYg
dHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmlu
ZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgw
MTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAK
ICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVm
ZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRl
Z2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3Np
dGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0Rh
dGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJl
dGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWlu
UHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29u
c3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVs
bHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1
cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4g
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0
cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNl
Z21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5k
ZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThk
OGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0
aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlm
IGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1
ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5
MjFmY2MwZmVkMmVkLi4zODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7Cisg
ICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwor
ICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25l
ZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAg
IHJldHVybiBrZXlJZHM7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAg
IGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRo
ZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBr
ZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rp
bmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAg
ICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5n
KGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNP
TlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
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
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0
N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFw
cGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRv
IHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERl
Y29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsK
LSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+
ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2Iy
Li40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0Zh
Y2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQw
NGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRT
aXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgog
I2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRp
b24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50
KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVf
dCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49
IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50
OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBu
dWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAg
ICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpA
QCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNE
YXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3
aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJl
ZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJv
dW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5n
IGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwg
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsK
ICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhh
biB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9l
cyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3Vh
cmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50
IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlk
ZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5z
aXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRh
UHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJi
M2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYx
YTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVX
aXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0
aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRh
Q29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4u
ODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6
OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmlu
ZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUz
ZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
RnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9G
b250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2
NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQy
M2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBv
YmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RG
b250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVj
Li5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkm
IGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxp
YnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxp
YnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRl
eCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJj
ODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURh
dGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0No
YXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9G
dEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBG
VF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4
LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6
ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVT
RShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4x
NDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBw
ZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXpl
KCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3du
ZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBj
aGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGYxNjA3MTViZGE3NzU5ODkw
MTMzNmI2M2M5NTY3YzAzMjUwYmQyNTcuLjk0NGM3MWU3MDczZTU2OTFhY2Y1ODcyMjA0N2E5MWJj
NzNkMDgxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENo
ZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAt
MTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAg
ICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0
ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVh
NDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00
MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJ
bm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIklt
YWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9
IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFn
ZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXpl
KTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6Okdy
YXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggZTFhMjFhMjk3NDE4YjdhNTE1ODAyODNkNTU5MDcwNTBjZTU1MmI5MS4uZDU2YjE5
ODUxNDI1NzZhNzVlOWVkMTExZDBmNjc5MmY5YzZhMGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NDQsNyArMzY0NCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERh
dGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5p
dERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRh
cyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+
ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVN
UCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRh
LnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBh
eWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2
Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZl
MTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFy
a3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNl
IH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVu
dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBn
Y2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBA
IC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4
dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRh
LT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNz
aC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0K
IApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VD
b250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1
cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4
dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
dW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXls
b2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFy
c2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQg
PSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2Fk
LT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFk
MzQyYTQ2NDdkMmYxLi4zNTJhMzNmY2E0MTIxZjA4YTBkY2FjNGYyNDVhZmY2MmEyNmRjM2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVt
SWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXls
b2FkKSkpCisgICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZj
MjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJl
MGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZv
cm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRo
VmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRh
dGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5
NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250
UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9F
WFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JF
X0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNi
ZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0
MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
UERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQo
KQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9j
dW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2
b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFj
NzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBl
OjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVl
UmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rp
b25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxp
Y0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25z
dAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3
ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAg
IE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBt
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0Rmxh
Z3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQx
NiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsg
Ly8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAg
ICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291
bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDog
VGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJl
Y29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFz
c2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBh
cnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBl
TWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25z
dCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3Nl
bWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFy
aWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9u
dGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlv
bnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5
cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBj
b250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJv
b2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1h
dGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jp
em9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRo
R2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3Ry
dWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5
cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0Owog
Ci0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRz
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaElu
Zm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBt
YXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3
IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhW
YXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAg
IGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0
NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0
Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAK
IGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhE
YXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlw
ZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQ
RV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZC
VVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEy
NmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVk
ZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQp
ICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8
ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAo
IWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1
Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0
aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZm
ZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9
IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0
IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFs
aWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMp
ICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRh
YmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3Qg
VGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0
Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29u
c3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVp
bnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3Zl
cmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZv
cm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4
MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2Yy
ZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5
OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZv
bnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcg
Zm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2Yg
dGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwg
b3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
Zm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0
dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0
YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3Jp
dHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJl
d3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVj
NDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0
OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0Owor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBG
b250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29s
IHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVp
bnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50
OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5k
ZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUz
MzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9Cisg
ICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxl
PihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1
dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBA
QCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQg
c3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmlu
Z1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBp
cyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAg
LTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9m
ZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJs
ZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50
OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9v
a3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBo
U3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBn
ZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxH
bHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAg
LTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAot
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291
bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsy
MzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBG
ZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQx
Nl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09
IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShP
cGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBA
IHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
bGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0
OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3Bl
blR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3Jp
cHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJs
ZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlw
dENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlw
dHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVy
LCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3Jp
cHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJh
c2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2Ny
aXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNv
bnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVy
ZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3Vw
TGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3Qq
IHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVh
dHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlz
dE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChi
dWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0
IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0
TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVy
ZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1
ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0
KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGlj
YWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRh
ZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3
ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wg
bG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rv
cjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwor
ICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6Okho
ZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6
dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhl
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVy
dGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZp
cnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGlj
YWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBA
IC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3Mo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVy
dGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFn
KTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlk
YXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAg
ICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlw
aE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
Yzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVj
MTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUo
KQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAg
YXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2Vl
NDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJi
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
Owogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZv
bnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25E
YXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNj
NzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFl
NTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkK
ICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
IHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1
dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAz
YzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1
ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIu
bV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBm
YWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFdu
ZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9u
dCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9
IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
fQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5
ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYw
LDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2Fu
U21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAg
ICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFj
ZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciog
Y3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsg
bV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQog
ICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9
CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0K
IApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5h
bWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBs
YWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRl
NmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4YTli
MDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYs
MTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBj
b21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBv
bmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigp
OwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAg
ICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlw
ZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRy
dWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0
OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0
aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAg
ICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2Rl
Y29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZv
LT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0Miw3
ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBA
QCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpz
ZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2Iw
Y2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQot
ICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
ICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFh
OGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li43ZjRkMDk2MjAwNTY5MTY2ZDc1MTk2Mzg5MmM4ODlkZDUy
NDc3OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZl
Y3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoTlNE
YXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6dHlwZV0pCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250
ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAo
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2
ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
IH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTQ4OCw3
ICs0ODgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGREZvcm1h
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJU
RkRdOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQotICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOworICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuZGF0YUluUlRGRm9y
bWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKWtVVFR5cGVSVEZdOwogCiAgICAgaWYgKCFjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQu
aXNFbXB0eSgpKSB7CiAgICAgICAgIE5TRGF0YSAqaHRtbEFzRGF0YSA9IFsoTlNTdHJpbmcgKilj
b250ZW50LmRhdGFJbkhUTUxGb3JtYXQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwpAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
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
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
ZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uM2IyOGJiZDEwMjUwYWFjYzMz
YjVkYWMwZjFkYmJjZDhiNWU1MWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTExNiwyMyArMTE2LDIzIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZVR5cGUgPSBicmlkZ2Vf
Y2FzdChhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFn
Q2xhc3NOU1Bib2FyZFR5cGUsIENGU1RSKCJBcHBsZSBXZWIgQXJjaGl2ZSBwYXN0ZWJvYXJkIHR5
cGUiKSwgbnVsbHB0cikpKTsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJB
cmNoaXZlVHlwZS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKICAgICAgICAg
fQogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1hdCkKLSAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOworICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGREZvcm1h
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlUlRGRF07CiAgICAgICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZGb3JtYXQp
Ci0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5S
VEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJU
Rl07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRh
SW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVJURl07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUlu
SFRNTEZvcm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJp
bmc6d2ViQ29udGVudC0+ZGF0YUluSFRNTEZvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVI
VE1MXTsKICAgICAgICAgaWYgKCF3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQuaXNOdWxs
KCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRh
dGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3Jp
Z2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmco
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAg
IHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIw
OTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5
ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25z
dApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlz
dEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdp
bigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRl
cmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUp
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0
YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNl
cmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICgh
ZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQo
KTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1v
ZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVy
biB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQs
NyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRv
cHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNE
YXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVi
b2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcg
PSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2
ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29u
c3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxh
dHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0
ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQz
OTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1
NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAg
IHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFt
ID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGEx
NDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
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
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3
YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkw
YmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6
ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7
CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9w
Q29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAg
IC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0
dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBp
ZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVG
aWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4s
IDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3Vj
Y2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRs
ZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFj
Zjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcg
KzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBH
ZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0
RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQg
Ynl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVh
ZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3Io
KSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDEx
ZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAw
MDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVB
bGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZm
ZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmlu
ZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEs
NyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwor
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2so
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8g
U3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5z
cGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52
YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZm
NjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFh
ZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nl
c3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9u
c2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RG
Ojpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAg
IGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsK
LSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2go
KTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4
IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFm
OGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3
ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZv
aWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6
ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlw
dFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxl
TWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFy
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQy
NmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEz
MTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RB
bGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIx
ZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25z
dCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAy
N2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQy
OGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVD
b2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7Cisg
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIs
IGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4
OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhf
dD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUo
bWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdk
Li45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNp
emUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+
ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIu
LmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hl
OjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25z
dAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHks
IFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJl
Y29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVz
dWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsK
KyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAg
ICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFh
OTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdh
YTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFn
ZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0
YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERh
dGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAg
bV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdl
dCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsg
bV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2MzNm
ZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
QEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAg
ICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwor
ICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0
R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsK
ICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0
ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkz
Zjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNv
cHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVy
biB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZl
M2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAs
MTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0Owog
CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0g
ICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
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
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4
ZmJlNTEyNTU2ZTE2NC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsNDkg
KzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNp
ZiBVU0UoQ0YpCi1zdGF0aWMgdm9pZCBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUodm9pZCAq
cHRyLCB2b2lkICppbmZvKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJl
YWJsZVJlc291cmNlKj4oaW5mbyktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIGNy
ZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoKQotfQotICAgIAotc3RhdGljIFJldGFp
blB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcihT
aGFyZWFibGVSZXNvdXJjZSogcmVzb3VyY2UpCi17Ci0gICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNv
bnRleHQgPSB7IDAsCi0gICAgICAgIHJlc291cmNlLAotICAgICAgICBOVUxMLCAvLyByZXRhaW4K
LSAgICAgICAgTlVMTCwgLy8gcmVsZWFzZQotICAgICAgICBOVUxMLCAvLyBjb3B5RGVzY3JpcHRp
b24KLSAgICAgICAgTlVMTCwgLy8gYWxsb2NhdGUKLSAgICAgICAgTlVMTCwgLy8gcmVhbGxvY2F0
ZQotICAgICAgICBzaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdGUsCi0gICAgICAgIE5VTEwsIC8v
IHByZWZlcnJlZFNpemUKLSAgICB9OwotCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJmNvbnRleHQpKTsKLX0KLSNlbmRpZgotCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
LXsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgd2hlbiBTaGFyZWRCdWZmZXIgaXMg
ZGVhbGxvY2F0ZWQuCi0KLSNpZiBVU0UoQ0YpCi0gICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0
ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBk
YXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7Ci0jZWxpZiBV
U0UoR0xJQikKLSAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19u
ZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9
LCB0aGlzKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKTsK
LSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciB7CisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVy
biBzZWxmLT5kYXRhKCk7IH0sCisgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJl
dHVybiBzZWxmLT5zaXplKCk7IH0KKyAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
Ojp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBp
ZiAoIXJlc291cmNlKSB7CkBAIC0xMzgsOSArMTA0LDcgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OlNo
YXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5LCB1bnNpZ25l
ZAogewogfQogCi1TaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkKLXsKLX0K
K1NoYXJlYWJsZVJlc291cmNlOjp+U2hhcmVhYmxlUmVzb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIGJv
b2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKIHsKQEAg
LTE2Miw3ICsxMjYsNyBAQCB1bnNpZ25lZCBTaGFyZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1
MTYwYWE0ZjdjNmNiNy4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMywxMiArMzMs
MTIgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIAotY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFyZWFibGVSZXNvdXJjZT4geworY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKIHB1Ymxp
YzoKIAogICAgIGNsYXNzIEhhbmRsZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDEyICs4MCwxMiBAQCBwdWJs
aWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1v
cnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAg
UmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKLSAgICB1bnNpZ25lZCBtX29mZnNl
dDsKLSAgICB1bnNpZ25lZCBtX3NpemU7ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG1fb2Zmc2V0
OworICAgIGNvbnN0IHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggYzBiNmVmM2ZhM2EyZTEyMDRjNjc3ZWNmODZhZWNiZDE5YmI2NGQ3Yi4uNjdiN2ViOTAzNDA1
NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBp
c051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjM0LDEz
ICsyMzQsMTMgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoc2hhcmVkTWVtb3J5
QnVmZmVyLT5zaXplKCkgPCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXIg
PSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihidWZmZXJTaXplKTsKICNl
bmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5k
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsK
ICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8
IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEsMTAgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6
ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVy
KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291
bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RG
Ojpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZd
KGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBA
IC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFz
dGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3Rl
YgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2
LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
e3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyAr
MzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdl
dCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsK
K30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
QEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJl
dHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIp
OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAx
YzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBm
N2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNz
IENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7
CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYx
LDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVl
YTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5
Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4g
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURh
dGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBi
b29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJm
NWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRh
NWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1
bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0g
bnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZh
Y2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFk
MmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJj
YzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZk
YTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJp
bmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hh
c0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xv
c2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWExYzFjMGM2
YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4Yjg2YzVi
MTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8PiB2b2lk
IGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1
bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9p
ZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rp
b248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lk
IGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAg
IGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
aW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUz
Mjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTks
NyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4g
IW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAg
ICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsx
NzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewog
ICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYw
OTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdh
ZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihj
b25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQu
dGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRv
IHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhI
aWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0
ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBw
SGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmls
XSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3
a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRS
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZj
YjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNjMjJlNDQ1
MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJl
Y2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2ln
CiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBn
dGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAg
ICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRD
dXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNp
emVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAz
ODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZjNTQyNmFj
OGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUt
Pm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpi
dWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAxNzQ3MGM2MmM3MjBk
ZGU4MmI3OTE1YjdiM2I1ODIwMjNlYjUxZWM3Li5iYmVmNjY3MzUxYTBhMmJmNThkZmFmNWE3MjEw
MDA2YTMxOGVhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVt
b3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS5kYXRhU2l6
ZSkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hh
cmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiAgICAgICAgIGF1dG8gbmV3Q2hhbmdlQ291
bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUo
YnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGRpZE1vZGlmeUNvbnRlbnRz
T2ZQYXN0ZWJvYXJkKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBwcmV2aW91c0NoYW5nZUNv
dW50LCBuZXdDaGFuZ2VDb3VudCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0NoYW5n
ZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEw
MmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNF
cXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMg
b2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFt
ZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAg
IGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBm
b3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6
bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJy
YXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlm
IChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1f
cHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6
bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9N
UGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAg
IGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0
ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1
cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNv
bXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEw
ODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZi
MDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJp
bmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2JiNmQ1ZGQxMGNiNjM1
M2FhZWY5MzU4ZTAzYjA0MDAzMmY5Njc3Li44ODgyN2ViMjkxMmE1MzRlOTI1YmI1ZmE4Zjk2MjNh
ZWMzYTEzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmlu
ZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNo
bm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1
MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3
ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAg
ICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgp
IH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZj
OGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZh
YzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9
IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZl
ZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGE4ZTkwZTQyOWE2ZWNlMTM2ODdiOWY5MWJjNzM4MmNhN2NiMGZmM2QuLjY1ZTVk
ODJhMzU3YmNiYWFmOTUwOTAzODVkMmFlZGEyZWRmMzQyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VM
KWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGlj
ZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0
YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7
CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNjU5NCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9h
cmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QK
ICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTY1LDcgKzc1NjUsNyBAQCAtICh2b2lk
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2Ui
LCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3
aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRh
dGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGlu
UmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmll
d10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA0Njc5ZDdiMDk4MWFhN2QzZmNkOWJk
ZTkwZWQ2ZmYyYWMyMzJlZTE1Li5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU4OCw3
ICs1ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpbWFnZUhhbmRsZQogICAgIGlmICghc2hhcmVkTWVtb3J5
QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlCdWZmZXIt
PmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oaW1hZ2VIYW5kbGUuZGF0YVNpemUpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlt
YWdlSGFuZGxlLmRhdGFTaXplKTsKICAgICBwYWdlQ2xpZW50KCkuc2F2ZUltYWdlVG9MaWJyYXJ5
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDZkMzMzODY5ZTRlMDAxMmQyN2QzZmU4NWQ4NWU1M2E0
ZWQ5Njk2MGEuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3
LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQwLDcgKzI0MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChp
cGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAg
ICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4o
c2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpcGNIYW5kbGUuZGF0YVNpemUpOworICAgIHJl
dHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0
YVNpemUpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yNzUsMTUgKzI3NSwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIGF1dG8gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5SW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1l
bW9yeUltYWdlLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFT
aXplKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKLQogICAgIGlm
ICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRN
ZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeUFyY2hpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFyY2hpdmVCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVk
TWVtb3J5QXJjaGl2ZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihhcmNoaXZlSGFuZGxl
LmRhdGFTaXplKSk7CisgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBzaGFyZWRNZW1vcnlBcmNoaXZl
LT5jcmVhdGVTaGFyZWRCdWZmZXIoYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgfQogICAg
IHBhZ2VDbGllbnQoKS5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RG
TW92ZShpbWFnZUJ1ZmZlciksIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3Rl
ZEZpbGVuYW1lKGZpbGVuYW1lKSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBX
VEZNb3ZlKGFyY2hpdmVCdWZmZXIpLCBvcmlnaW5JZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRm
YjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMz
NDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0K
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6
OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6Oldl
YlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2Yzdh
MjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBh
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
LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4
MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQu
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0g
bnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAg
ICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAg
ICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4o
KSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVt
LT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVl
MWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25O
YW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3Qg
U3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFz
dGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9y
bVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3Qg
V2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQz
ZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVm
KCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAg
aWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAg
ICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQg
Y2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNl
U2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNC
dWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250
aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZm
ZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVU
eXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNo
YWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpp
bmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhi
MjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNv
dXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUs
IG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAg
IG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3
YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNo
ZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRl
IFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2Ug
dXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUx
YTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0
d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0
aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIu
aXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUz
M2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRm
MDU2MDI0NGIzZjg1ZTRjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVi
b2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0
ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLjkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRi
NTIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsK
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpV
bmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRv
U3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJj
Y2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTcz
NzE2MDZlMzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xMTg5LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkg
OiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDAp
OwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNl
KCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNWQwNWMwZWFiNzZiNjJiNGY4MzZj
ODU4MjIxZmVhNDQ3MmUwNTU2ZS4uNmYzZjU2NmM1MmYxZTM5ZGVmMDBiNWYzMTlmZWJhZTY2Nzhh
MTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMy
LDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJp
ZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JP
dmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZm
ZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhl
IFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMTQ1LDcgKzE0NSw5IEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmCiAgICAgaWYgKGlwY0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
aXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6ZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpAQCAtMzIyLDcgKzMyNCw3IEBA
IFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVm
ZmVyQ29weSBkYXRhOwpAQCAtNDA0LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
CiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKQEAgLTQxMiw3ICs0MTQsOSBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hh
bmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNo
YXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICBpZiAo
IXNoYXJlZE1lbW9yeUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlwY0hhbmRsZS5kYXRhU2l6
ZSk7CiB9CiAKIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0
bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAu
LjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ1OWNmYTcxMDZmMDg0NDJlM2ZiMzk5M2IxYTg4MDg4
MWY3YmEzNi4uOWI5YTk4NmMwYzk2YTgzYWNmNWI4MjllNzM2MzkwNzE3NTVjNmJlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3MzUsNyAr
NzczNSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0lu
ZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVt
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgp
KSwgaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZ
ZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxp
Z2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChzaGFyZWRNZW1vcnkt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpLCBpID09IGluZGV4ID8gU2Ny
b2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkr
KzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2Ez
NmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUu
c2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCku
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUx
MmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAt
MjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYg
SEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAg
LTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFM
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUx
NzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAg
LTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3
SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4
NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNl
cnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdl
c3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0
ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0
Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5
MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdjNTZhOGU2YWEw
Y2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQw
N2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlw
ZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9
CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZl
cihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEz
YmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAt
NDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9j
dW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXgg
ODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBj
YWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsy
MzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1l
bnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAg
ICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3By
aXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsK
KyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2Ug
X2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8g
cGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFh
ODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUxMzhmNGQ0MzE3
Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01l
bnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQm
IGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewogICAg
ICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRh
dGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVu
Z3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6
ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRU
ZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFj
NzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSAr
MTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2Rl
cgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0
byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5T
RGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNV
UkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2Rp
bmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Ug
PSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwg
PSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBl
KCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAg
ICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25z
ZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtl
eV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxL
ZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3Vy
Y2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBm
b3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBA
QCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgsNyBAQCAtIChO
U1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFF
bmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7
Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3Jl
RGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2
MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0
ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Ly8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBN
ZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVh
bTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8
TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVh
bShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
aAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGEx
NWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZp
bmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9y
eVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3
NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENs
b25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9y
eVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJl
YW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1v
cnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
ICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThk
YmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFk
ZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0x
NjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8g
SVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0
ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAg
YXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0
ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAg
ICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNv
cHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQz
OWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEz
YWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4m
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdj
YTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFh
ODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJl
ZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3Yzdj
MDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0
YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYg
KCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkp
LmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlS
ZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9u
KF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVk
NjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUx
N2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJj
ZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBX
ZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5
OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdl
YlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdl
YlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8g
SVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiZDVk
NTM4MjA1NWM5MjcxOTU3OTY3ZTVmYmZiZTI2MmFlOGY2YzQuLjczYTk2MmJkNDk0ZTlkMWQxZDM1
NGM1ZDc5ZjVkYjgyOTBmMWM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yMiAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKwogMjAyMS0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgb2xkIGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRo
YXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZm
ZmU0MThlNWZhNDcxNTI2NGMuLmExMTVkNGJlMWZiYjYzZmU1OGY1OTIxYTRlMTU5OTM5ZWY3YjZj
MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCkBAIC00MCwzOCArNDAsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAg
IEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUo
KSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9U
UlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVY
UEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBF
Q1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUo
KSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRh
KCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVh
cigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MCwxMiArODAsMTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3Vz
QnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3Vv
dXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5k
YXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAg
IEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTYsNyArMTU3LDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1
ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTcy
LDMwICsxNzMsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywg
J2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycs
ICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0g
ICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rv
cjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShz
MSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
MCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRv
IGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBi
dWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAg
YXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUo
KSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7
CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wu
ZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCks
IGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXIt
PnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCks
IGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBn
aDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7
CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQ
dHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBA
IC0yMDcsMTUgKzIxMSwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQog
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJl
dHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZm
ZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywg
J2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAg
ICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319
KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2Mn
IH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSku
Z2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44
NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
QEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFy
cmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445179</attachid>
            <date>2021-11-26 00:51:27 -0800</date>
            <delta_ts>2021-11-26 00:54:43 -0800</delta_ts>
            <desc>WIP ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211126195124.patch</filename>
            <type>text/plain</type>
            <size>447604</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y4MWQ1Mjg0MTUwMDQ5
MDVmNmQ1YWM1NTZiZTAyMDQzYjA1MjI5YS4uZWY4NmJhNWRlYjkwMDhiNmE0NmYzOTM4ODMyMGI2
OGQwMWY2YzBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyMSBAQAorMjAyMS0xMS0yNSAgSmVh
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
bmMpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgZmxhdHRlbmluZyBhIFNoYXJlZEJ1ZmZlciB3aGVuIHJlYWRpbmcgcmVh
ZGluZyBpdCB0aHJvdWdoIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDgxCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1NzMzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBNY0Nvcm1hY2sK
KworICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciByZXF1aXJlZCB0aGUgU2hhcmVkQnVm
ZmVyIHRvIGJlIGZsYXR0ZW5lZCB3aGljaAorICAgICAgICB3b3VsZCBtdXRhdGUgdGhlIHVuZGVy
bHlpbmcgU2hhcmVkQnVmZmVyLgorICAgICAgICBUaGUgcGVlayBtZXRob2Qgd2FzIGFsc28gaW5j
b3JyZWN0IGlmIHRoZSBkYXRhIHJlYWQgb3ZlcmxhcHBlZCBtdWx0aXBsZQorICAgICAgICBzZWdt
ZW50cyAoaXQgd291bGQgcmV0dXJuIHRvbyBtYW55IGNoYXJhY3RlcnMpIGFuZCBzb21lIG1lbWJl
cnMgd2VyZSB1c2VkCisgICAgICAgIHdpdGhvdXQgYmVpbmcgaW5pdGlhbGlzZWQuCisKKyAgICAg
ICAgQWRkaXRpb25hbGx5LCBhZGQgYSBzaW1pbGFyIHJlYWQgbWV0aG9kIGluIFNoYXJlZEJ1ZmZl
ciB0aGF0IHdpbGwgYmUgdXNlZAorICAgICAgICBpbiBidWcgMjMzMDMwLgorCisgICAgICAgIENv
dmVyZWQgaW4gZXhpc3RpbmcgdGVzdHMsIEFQSSB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6cmVhZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpuZXh0Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OnBlZWspOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisK
IDIwMjEtMTEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24o
KSB0YWtlIGEgY2xhbXBpbmcgYXJndW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGFkZmVjNmZmZjRiZTY4ZWM0
YWNkMzNhOTEyYjRiYjk1M2E2YWZlYS4uM2I2NGY5OTRmNzkyZTIyMjE4YTY3MmVjMDVkOTRiYjA5
ODE4Njc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTAgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1
b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGlt
bXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZl
dGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25z
dCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAg
IChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChB
UEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdl
dDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJm
b3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2Fy
ZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlv
blNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdh
dGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xp
ZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCisyMDIxLTExLTIxICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGlu
ZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEK
KyAgICAgICAgcmRhcjovLzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFyZWRNZW1vcnkgaW50
byBhIFNoYXJlZEJ1ZmZlciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlciBpbnN0ZWFkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlv
dXIgb3RoZXIgdGhhbiB0b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisKKyAgICAgICAgRmx5
LWJ5IGZpeDogY2hlY2sgZm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVkTWVtb3J5IHRvIGFu
IElQQyBoYW5kbGUKKyAgICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVS
ZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9kLCByZW1vdmluZwor
ICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFTZWdtZW50OjpQcm92
aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUsIGNo
ZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5pbmcgY29k
ZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KToKKworMjAyMS0xMS0yMSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVt
b3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisgICAgICAgIHJkYXI6
Ly84NTYzNzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZm
ZXIgdXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgaW5zdGVh
ZC4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVyIHRoYW4g
dG90YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6IGNoZWNr
IGZvciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFuZGxlCisg
ICAgICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6IE1ha2UgU2hhcmVhYmxlUmVzb3VyY2UgdXNlIHRocmVhZC1zYWZlIHJlZmNv
dW50LgorICAgICAgICBBIFNoYXJlYWJsZVJlc291cmNlIG9uY2UgY3JlYXRlZCBpcyBpbW11dGFi
bGUgYW5kIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0CisgICAgICAgIGl0c2VsZiBoYXMgdGhyZWFk
LXNhZmUgcmVmb3VudGluZy4gRGVsZXRpbmcgdGhlIG9iamVjdCBvdXRzaWRlIHRoZSBtYWluIHRo
cmVhZAorICAgICAgICBpcyBzYWZlLgorICAgICAgICBNYWtlIG1lbWJlcnMgY29uc3QuCisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhvZCwgcmVt
b3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1c2luZyBEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIEhhcmRlbmluZyBj
b2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgSGFyZGVu
aW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVB
cHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKIDIwMjEtMTEtMjIgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBjb25jdXJy
ZW50IGRpc3BsYXkgbGlzdCBsb2dpYyB0aGF0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDZlNzFhZDM4MmUyN2M4MzBhNTI1YWQ5NTBmMzMzZjQ5
YTJlMTVjY2MuLmJmOWUwNzFmM2Y2M2M3NGRhODFhYzQ4MWEyYjNjYWVjMWU0MDZiZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1
bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
IChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6CisKIDIwMjEtMTEtMTYgIE5pa29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNvcmF0aW9u
TGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGNhZDYxYTc3YTAxMGNkZDg3MGYw
YTVjNjdkMjEzOTY5NjZiYjYwYWMuLjUyOTQ5MzE5ODI4ZTRlMTU2MzgyYjkzN2FmOWJjMmNhNWVi
ZTQxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJl
YW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAo
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6
CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAq
IFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3Ig
QVhJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggOWI1Nzg2OWU2OTJjZWJkZjU1MTJkNWM5NmY4YzE3
YWY1NjFmZjc1Zi4uOWJhOTBkZjExNjBhNTBjNWU2MTdiMGQwOWFmNWEwNDYwZDQzYjhmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTcxLDYgKzExNzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZS5oCiAgICAgcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmgKICAgICBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorICAgIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmgKICAgICBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKICAgICBwbGF0Zm9ybS9TbGVl
cERpc2FibGVyLmgKICAgICBwbGF0Zm9ybS9TbGVlcERpc2FibGVyQ2xpZW50LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJk
YTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZm
ODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5l
ZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAg
IGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAg
ICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5n
PihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5k
ZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjll
MjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVU
eXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUlt
YWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5H
UmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9i
OjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1
MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVm
NWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5p
bCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAg
ICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0Mzcu
LjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21w
dXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90
IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0
YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxs
cHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEz
ZTQ3MDNmMDEzYzEzY2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNh
Y2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5h
ZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGln
dW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQg
RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VC
b2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhj
ZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
ZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsK
QEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3Bv
bnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwog
ICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZN
b3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdU
Rk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdU
Rk1vdmUocmVzdWx0KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJl
cXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21p
c2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQog
ICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHsgZGF0YS0+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
YjNiLi4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAt
Mjc1LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2Up
LCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwg
Y29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURh
dGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0
byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAp
KQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBj
b250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3
ICszNjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9
IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0
RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0
NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBl
NjRiYWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2Fs
bGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVu
ayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6
c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNl
dEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhp
c10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxs
KCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNv
bnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2
MThjY2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAg
dm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVm
PEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURh
dGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1
aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNh
ODQ5MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4
MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBI
aWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2Rl
ciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3
ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUx
OTk2M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHBy
IHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8v
IEZpbGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0g
Y29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMw
YjQ1NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3Yzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkg
fTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIo
KTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1
aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0
YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRh
dGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFm
ZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJL
ZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
KTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJL
ZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3
NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYw
NWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4
Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRl
eChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0
aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURC
S2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRh
dGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9u
LWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7Cisg
ICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBz
dG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBj
cmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6
ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJp
YWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNh
dmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRh
YmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8K
IHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlu
ZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBp
bmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICgh
aW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1
MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIs
IGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWlu
ZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBp
bmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsK
KyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAg
ICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1
ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRv
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0
byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQx
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRl
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2Rl
KCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRy
YW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0
aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0
YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3Rv
cmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9u
Il9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2Jq
ZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUi
X3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAg
YXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAg
ICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9
OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkg
PSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0
Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRH
ZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXku
aXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5
LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBp
bmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9z
IH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAg
b3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVs
bCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7
CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAg
IGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1h
eGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZv
ciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIy
N2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2Zl
ZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsy
NjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRl
bWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVf
T0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1l
bnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3
IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50
SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1
dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4
U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNR
TElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50
IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZk
ZThjNGZkZWU2MmI5NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFh
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBt
X2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5k
aW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVu
dGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlk
ZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2Rl
NTYwZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZm
ZDJkOGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAog
CiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAg
IHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAg
ICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRl
eHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAg
ICAgICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
aW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdh
YzdlZWNkOTE3YzFmNjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9k
YXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwo
KSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkt
Pm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVy
bCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4
MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3
ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJM
PiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAg
YXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUi
LCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVs
U291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNGU5Njk4
NDRkZmJmMzhmNzk1Y2NjZmU2YmJjNjU0YTdlMDdlYTJiLi40Njg1ODA4MTY5ZWQ1MTUwNDI3YzUy
OTUwZjAwYzY3OGQxYWFlYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODgsNiArNDg4LDcgQEAKIAkJMUE0OTRFREYwQTEy
M0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0OTRFREQwQTEyM0Y0QzAwRkRBRkMxIC8qIEpT
RG9jdW1lbnRGcmFnbWVudC5oICovOyB9OwogCQkxQTRBMkRGMDBBMUI4NTJBMDBDODA3RjggLyog
SlNIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0QTJERUMwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFuY2hvckVsZW1l
bnQuaCAqLzsgfTsKIAkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0QTk1NEMw
QjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRkEyRURGMjc1MDZGREUwMDExQzE1RCAvKiBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUE0REE0MjIxQ0REM0E4MzAwRjQ0NzNDIC8qIExpbmtJY29uQ29sbGVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTREQTQyMDFDREQz
QTgzMDBGNDQ3M0MgLyogTGlua0ljb25Db2xsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTU2OUQxMjBEN0UyQjgyMDA3QzM5ODMgLyog
b2JqY19jbGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE1NjlDRTMwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MuaCAqLzsgfTsKIAkJMUE1
NjlEMTMwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFNDBEN0UyQjgyMDA3QzM5ODMgLyog
b2JqY19jbGFzcy5tbSAqLzsgfTsKQEAgLTk2MDYsNiArOTYwNyw4IEBACiAJCTUxRjc5OEVDMUJF
ODgwRDMwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCSW5kZXhJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
Rjg4NkJFMUYzMjkyMDcwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JTZXJ2aWNlV29y
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGODg2QkYxRjMyOTIwNzAw
QzE5M0VGIC8qIEpTTmF2aWdhdG9yU2VydmljZVdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRkEyRUQ3Mjc0
Rjc4MzcwMDExQzE1RCAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI1NTAyMTEzRTNFOTEwMDgyMTE3NiAvKiBK
U0Nsb3NlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbG9zZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI1NTAzMTEzRTNFOTEwMDgy
MTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDbG9zZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFG
QjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHls
ZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTI2LDYgKzI5MTI5
LDggQEAKIAkJCQkwNzZEMUMxRDIzRjZEOUQ4MDBEOTVCMDYgLyogU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlLmggKi8sCiAJCQkJMUE0QTk1NEIwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJl
ZEJ1ZmZlci5jcHAgKi8sCiAJCQkJMUE0QTk1NEMwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1
ZmZlci5oICovLAorCQkJCTUxRkEyRUQ3Mjc0Rjc4MzcwMDExQzE1RCAvKiBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAgKi8sCisJCQkJNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggKi8sCiAJCQkJODM0REZBQ0UxRjdEQUU1NzAwQzI3MjVCIC8q
IFNoYXJlZFN0cmluZ0hhc2guY3BwICovLAogCQkJCTgzNERGQUNDMUY3REFFNTYwMEMyNzI1QiAv
KiBTaGFyZWRTdHJpbmdIYXNoLmggKi8sCiAJCQkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8q
IFNoYXJlZFRpbWVyLmggKi8sCkBAIC0zNjEzNCw2ICszNjEzOSw3IEBACiAJCQkJRkQxQUYxNTAx
NjU2RjE1MTAwQzZENEY3IC8qIFNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFEOUYw
RkMxMjEyMjAyOUIwMDVEOEZENCAvKiBTaGFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxRkEyRURGMjc1MDZGREUwMDExQzE1RCAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQTkxREMyNENGNDZGRTAwQkZEODlDIC8qIFNoYXJlZEdh
bWVwYWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5
IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFE
MDFGN0RBRTVEMDBDMjcyNUIgLyogU2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5k
ZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2MWM5
OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRp
YyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxv
YWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01F
eGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJO
b3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwg
WyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5
NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRm
NGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFt
X2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAg
IG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7Cisg
ICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1f
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgq
bV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAg
ICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmco
KTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNC
dWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0
YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwog
ICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUgU3Ry
aW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29s
PiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAKaW5kZXggY2FkYzRhMDU5NGM1YmY2Mzc4Y2ZhN2IwZThjYTQ3NTI2NTYwYmFkZC4uNGI0
Mzk5NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNW
R0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9z
dmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAg
ICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVk
T1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9u
dC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmco
KSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2lu
RG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2Ug
aWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0
ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVk
aWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3Ro
KCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3Jh
cHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRp
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEy
M2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250
U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYg
QEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRG
YWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9u
dHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2Fk
UmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50
ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBt
X2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2Fh
NC4uZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3YjcwYTEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50
SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsK
LSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIx
MWMyMjhiOTFjLi5mNWZjZGNjYjY2NjU4MjAyMzg1MjBlNjMyMzUxYzlmZmEyYWI5YWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xh
c3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVk
aXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTUzNiw3ICs1Mzcs
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2Rl
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFs
b25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NzMsNyArNTc0LDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJbmZv
KEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRU
eXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2MTksMTIgQEAgcHJpdmF0ZToK
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
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
CmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEw
MGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9y
OjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYg
YXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9u
dDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJp
YnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVk
U3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAo
IWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0
YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
UyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0
ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAK
IFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBA
IFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6Omdl
dFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZl
Y3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
IGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8g
ZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAg
ICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAg
ICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwx
MiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVy
RGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0
V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
CiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNm
ZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJW
aXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxl
U3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
REZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7
IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAg
ICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4
MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlm
OWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAog
ICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkp
IHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAg
ICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwi
KSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
ICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1l
bnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAg
ICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJy
ZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtm
aWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7
CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZp
bGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
IChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAg
ICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byog
cmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgy
Yjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLmFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3
MzA5ODE2NzlmOWYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAg
ICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAg
fTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnkt
PnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNo
bWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0
YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwg
cmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0
RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFn
bWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9
ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdU
Rk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVl
LT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAg
ICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQ0Miw3
ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVU
eXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0
YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBN
YXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
IH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1
cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5j
dGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEs
NyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRS
ZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6
ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJm
cmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFt
ZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9j
dW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dN
SU1FVHlwZUFzSFRNTCk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MzAsNyArNjMwLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5w
cmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCBi
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAg
ICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODky
ZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUg
QEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1
bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVl
IHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNl
ZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9T
IFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3Qg
U3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxl
c2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVu
dHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQu
dHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0
dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0co
RlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVt
cGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgp
LT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxk
IHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1l
bnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2Ug
Z2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0
NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVk
NDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBp
ZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAg
ICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0
NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2Mz
NDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEy
ICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNv
bnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7
CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0
ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFz
ZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4
MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiAr
MTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZy
YW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRl
bnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7Cisg
ICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAy
YzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChh
dXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3
YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlm
MTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxv
YWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vz
c0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigp
LCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNh
bm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4
ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1
dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQg
PSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdj
ZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwog
Y2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAg
ICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAyLDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkK
ICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jl
c291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0
YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAg
ICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25v
dXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IDNhMDY0YmM3MjMxYTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQx
MDljMjA4NjJlZmFlOWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVz
ZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
KSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwg
eyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5
YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5y
ZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAt
MzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVu
dGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAg
ICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCku
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9n
U3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZk
N2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFm
YjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3
IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50Kiwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2
aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYg
PSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVz
dCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjkw
NmQ2NGY1MWZiMmI3ODgwNWUwYmYyYzdiZDUwMjkxMGZlNGY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZj
NjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7
CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUg
TUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3Qg
dG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlv
biBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGgg
Q0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2
MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4
MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRp
ZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNv
dXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVt
b3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRo
KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291
cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3
Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0
YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8g
YSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBw
b3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAv
LyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNh
bmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0
aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNl
KHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90
IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsK
KyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3
MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNw
b25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3Vz
bHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEu
LjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkg
OiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0
MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAg
ICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAg
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQt
PmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNv
bHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1
ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJj
ZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkg
Q0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0
YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAg
ICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5
IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVz
b3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAg
CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5n
ZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAt
MjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlz
IG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNp
b24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0
VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5u
b3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3Vy
Y2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAg
ICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5n
ZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFw
bGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0
KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBl
Y3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJh
Y3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5
NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwg
cm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5S
ZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0
ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJj
ZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAg
ICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAg
ICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcg
KzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2Ug
PSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCBy
ZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJs
ZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcg
KzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJh
bWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3Jh
cCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQg
aW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3Ig
ZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFt
ZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwi
IHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJh
bWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVl
Li43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0x
OTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29k
ZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQg
Zm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwx
NyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9
IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7
CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBk
YXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1J
TUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBp
cy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0
dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5k
IEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDky
NzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAog
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmlu
ZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVk
Y2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
Y29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNr
SGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4
dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBp
cyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
QEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEg
dG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBk
dXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVl
dFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFz
IGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hl
YXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQz
MzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hl
ZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lk
IENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChk
YXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3
ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsK
IH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBi
b29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIm
IGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZm
ZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFw
cGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJu
IGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29s
bGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9u
dDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNM
b2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxl
IChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGll
bnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3
ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRp
YXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9y
bURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29u
dGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURh
dGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9v
bCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAg
Ym9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjll
ZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAx
ZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpj
bGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJ
bWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkg
PCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7
Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1
cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVS
UykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6
OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3Vs
ZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZl
cnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJj
ZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4
NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNv
bnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2
b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUlt
YWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2
OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3
ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsK
ICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIg
KzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZm
ZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xp
Y3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1
dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkp
IHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBp
bmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAg
ICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRh
bERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3NzZiYThmNDBjMjgzMTU4Y2RiNzYxYWU5
NzAyLi5hMTA1ZTJiNGM3ZDc1NGUxOWI3NTVhOWNhYzU3NGJlODI4N2FlYTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkwNiw3ICs5
MDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjAsOCAr
OTIwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJl
ZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5l
d0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFj
ZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNl
NmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3
ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNl
bnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJl
cXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9u
b3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2gg
Z3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIx
YjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVz
ZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAg
ICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdz
LCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAg
ICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2
OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1Yzdi
ZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAg
ICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxl
ZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQo
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7
CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAg
ICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFt
X2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9
IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAg
ICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVs
bHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2Rl
NjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0
ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVu
dCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
b252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZl
cnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7
CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25z
dCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2Rl
Y2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFiOGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05
OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lk
IENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4
NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYz
YjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRl
eHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAog
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/
IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1f
Y2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQz
NDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygp
IGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBh
YzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICsz
MiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVN
b25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9y
ZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAz
YmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2Qy
ODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkg
dG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0
IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91
dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsK
ICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2Fj
aGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25p
dG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6
OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJh
Y2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRv
cjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVC
YWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7
CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgy
Mzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmEzNjNiN2IwMmNiM2M5Nzdk
NTVmY2RmY2NjYmE0MzFkMzUwNzA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFz
dGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1l
OwpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRp
bmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENh
bmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVj
a2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJj
NDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFhOGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5
ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3Qg
U3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hv
dWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNw
ZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6
Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dl
ZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNo
ZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVl
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxYTEyMTBmYTgz
MzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYxLi5kNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdl
ODg3MjlkMmNkZTgwNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApA
QCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZy
YW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFj
Y3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNl
cmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdn
ZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29k
aW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMp
IHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NT
dHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNp
ZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgVGV4dEVuY29kaW5n
IHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAg
IEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBw
ZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGlu
Zy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4
dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAg
ICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAg
dm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1h
Z2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RG
TW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNv
dXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApp
bmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRi
ZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2Ug
ewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0
b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3
OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFl
ZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAg
c3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5h
bWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFX
aXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRl
eCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRj
MzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJl
RGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAg
ICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0g
ICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1
ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9h
ZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRp
bmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAg
IFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5m
aWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZN
b3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9m
aWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXpl
KCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxl
ciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1
NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4
ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2Rl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRv
dWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTZmMzQyYzE3NTRj
NDVjNGE3MzUyOWJmOGY3MWIyLi4xMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFhMDQzNmVlN2Y3OTQ5
M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2Vi
Q29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRD
b3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
bkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNs
aWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAg
IFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlm
CiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lm
ICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnRE
YXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGlt
YWdlU2l6ZTsKQEAgLTMyOCw3ICszMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFk
ZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1
bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5n
Rm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRU
eXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1
MmNjZjY3YWU3MC4uNmRjZWNiNmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApA
QCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURh
dGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVu
dEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVP
cmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBA
QCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3Rl
Ym9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5k
ZWNvZGVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4u
YmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpAQCAt
NjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7
CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZm
ZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5hNzg4ZmI3MzBlZGMxYzNlZmFkZTg3
MGE0MDExZjhjNGJiYWMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJv
YXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JM
b2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQ
YXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
I2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNm
ZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJE
YXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNo
aXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0
OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4
NjFlODRhMmZkOTZlLi5iYTY4MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcs
MTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87
CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoK
QEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0
ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBk
b21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVj
dG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmlu
ZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmlu
ZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBh
NjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDQ3NTQyZGFjYWViODZhNWMzYWU4OGZlYjRkZmFm
NDQ5ZmMzZWZjMzUuLjVlMjVhZTNlNDgxMTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYgMTAw
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
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAgLTE1NSw2ICsxMzAsMTIgQEAg
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogfQogCiBTaGFyZWRCdWZm
ZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29u
c3QKK3sKKyAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2Vn
bWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50
LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07Cit9CisKK2Nv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpn
ZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVB
U0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShj
b25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRy
eSkgewpAQCAtMTYyLDcgKzE0Myw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZl
cjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogICAgIH07CiAgICAgY29uc3Qg
RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IHN0ZDo6dXBwZXJfYm91bmQobV9zZWdt
ZW50cy5iZWdpbigpLCBtX3NlZ21lbnRzLmVuZCgpLCBwb3NpdGlvbiwgY29tcGFyYXRvcik7CiAg
ICAgZWxlbWVudC0tOyAvLyBzdGQ6OnVwcGVyX2JvdW5kIGdpdmVzIGEgcG9pbnRlciB0byB0aGUg
ZWxlbWVudCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBwb3NpdGlvbi4gV2Ugd2FudCB0aGUgZWxlbWVu
dCBqdXN0IGJlZm9yZSB0aGF0LgotICAgIHJldHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJl
ZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24gfTsKKyAgICByZXR1cm4gZWxl
bWVudDsKIH0KIAogU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdApAQCAt
MTc1LDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0
CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJl
ZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBT
aGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQor
Citib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSgpKSwgMSk7CkBAIC0xOTYsMTAgKzE5MiwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEu
bV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEu
bV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAg
ICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIwNywyMyArMjAzLDI4IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFy
ZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwpAQCAtMjM3LDE3ICsyMzgsMTIg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9u
ZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVu
ZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7Cisg
ICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Q
b3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUt
PmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQot
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNl
Z21lbnRzID0gbV9zZWdtZW50czsKQEAgLTI3Nyw2ICsyNzMsMzMgQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVh
ZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAoreworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQorICAgICAgICByZXR1cm4gZGF0
YTsKKyAgICBhdXRvIHJlbWFpbmluZyA9IHN0ZDo6bWluKGxlbmd0aCwgc2l6ZSgpIC0gb2Zmc2V0
KTsKKyAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgcmV0dXJuIGRhdGE7CisKKyAgICBkYXRh
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVtYWluaW5nKTsKKyAgICBhdXRvKiBjdXJyZW50U2Vn
bWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihvZmZzZXQpOworICAgIHNpemVfdCBvZmZzZXRJ
blNlZ21lbnQgPSBvZmZzZXQgLSBjdXJyZW50U2VnbWVudC0+YmVnaW5Qb3NpdGlvbjsKKyAgICBz
aXplX3QgYXZhaWxhYmxlSW5TZWdtZW50ID0gc3RkOjptaW4oY3VycmVudFNlZ21lbnQtPnNlZ21l
bnQtPnNpemUoKSAtIG9mZnNldEluU2VnbWVudCwgcmVtYWluaW5nKTsKKyAgICBkYXRhLmFwcGVu
ZChjdXJyZW50U2VnbWVudC0+c2VnbWVudC0+ZGF0YSgpICsgb2Zmc2V0SW5TZWdtZW50LCBhdmFp
bGFibGVJblNlZ21lbnQpOworCisgICAgcmVtYWluaW5nIC09IGF2YWlsYWJsZUluU2VnbWVudDsK
KworICAgIGF1dG8qIGFmdGVyTGFzdFNlZ21lbnQgPSBlbmQoKTsKKworICAgIHdoaWxlIChyZW1h
aW5pbmcgJiYgKytjdXJyZW50U2VnbWVudCAhPSBhZnRlckxhc3RTZWdtZW50KSB7CisgICAgICAg
IHNpemVfdCBsZW5ndGhJblNlZ21lbnQgPSBzdGQ6Om1pbihjdXJyZW50U2VnbWVudC0+c2VnbWVu
dC0+c2l6ZSgpLCByZW1haW5pbmcpOworICAgICAgICBkYXRhLmFwcGVuZChjdXJyZW50U2VnbWVu
dC0+c2VnbWVudC0+ZGF0YSgpLCBsZW5ndGhJblNlZ21lbnQpOworICAgICAgICByZW1haW5pbmcg
LT0gbGVuZ3RoSW5TZWdtZW50OworICAgIH0KKyAgICByZXR1cm4gZGF0YTsKK30KKwogdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwpAQCAtMzIy
LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVy
OjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICBy
ZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50
cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zMzksNyArMzYxLDU3
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAj
ZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVu
dD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3Vz
ID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJU
KGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5p
c0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBp
ZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5
UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBN
YXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmls
ZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBp
bmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAg
aWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAg
IHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50
OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9z
ZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERh
dGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzU4LDcgKzQzMCw3IEBAIGNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTM2OSw3ICs0NDEsNyBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQyMyw3ICs0OTUsNyBAQCBib29sIFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNv
bnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDQyLDcgKzUxNCw3
IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdU
Rk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldp
dGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXpl
KCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00NjYsMTYgKzUzOCwyMSBAQCBjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
c2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25z
dAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOwor
fQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBb
c2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3Rl
cnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUwMSw3
ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMzk1M2IxMTJiYjExMDc1MGE3Y2Ix
NzQzYThkY2Q3NzI0N2FkYTFhYi4uNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMxYzI0NjFjZjFjYjAy
YzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NSAr
NjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBj
bGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6
Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVm
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
KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsK
LQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsg
fQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIo
KTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0g
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50Lgot
ICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAg
Ym9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0Uo
R0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNl
Z21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBs
aWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3RydWN0IFByb3ZpZGVy
IHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAg
ICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdS
ZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAg
ICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0
YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyNlbmRpZgorfTsK
IAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVm
ZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJh
eT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQot
ICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgorCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisK
KyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVw
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVf
dCBiZWdpblBvc2l0aW9uOwpAQCAtMjA5LDUzICsyMTAsMTAyIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsK
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJv
b2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwg
dGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAg
ICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
dG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYm
KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRp
Z3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBi
b29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsK
LSAgICAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
LSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgY29uc3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25z
dDsKIAogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJp
bmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlz
IGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVu
dCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICgh
c2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4u
LihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERh
dGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9u
IGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBm
cm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVu
dW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmls
ZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9O
KQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNv
bnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisg
ICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0Owor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0
YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY1LDIxICszMTUsMjEgQEAgaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6
ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dDsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVT
RShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0
OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAg
ICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVf
dCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCA1ZTQ0NjZjZDNm
MTcxODhhMjdjMGNkZTFlYThhODAxYjAyYTI0N2Q1Li5jZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZh
ODljMGRhOWI4YzQ5ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwyMyArMzIsMjIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIgogCi0jaWYgRU5BQkxF
KE1IVE1MKQotCi0vLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBvdmVya2lsbC4gUmVtb3ZlIHRoaXMg
Y2xhc3MgYW5kIGp1c3QgaXRlcmF0ZSB0aGUgc2VnbWVudHMgb2YgYSBTaGFyZWRCdWZmZXIKLS8v
IHVzaW5nIHRoZSBjb29sIG5ldyBTaGFyZWRCdWZmZXI6OmJlZ2luKCkgYW5kIFNoYXJlZEJ1ZmZl
cjo6ZW5kKCkgaW5zdGVhZCBvZiB1c2luZyB0aGlzIGNsYXNzLgotCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShNSFRNTCkKKwog
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKLSAgICA6IG1fYnVm
ZmVyKGJ1ZmZlcikKKyAgICA6IG1faXRlcmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKKyAg
ICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKKyAgICAsIG1fc2VnbWVudChtX2l0ZXJh
dG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQt
PmRhdGEoKSA6IG51bGxwdHIpCiAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCiB7CiB9CiAK
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQotICAgIDogbV9idWZmZXIoYnVm
ZmVyKQorICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQorICAgICwgbV9p
dGVyYXRvckVuZChidWZmZXItPmVuZCgpKQorICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJy
ZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgp
IDogbnVsbHB0cikKIHsKICAgICBzZXRTZXBhcmF0b3Ioc2VwYXJhdG9yKTsKIH0KQEAgLTY1LDEy
ICs2NSwxMyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpzZXRTZXBhcmF0b3IoY29u
c3QgY2hhciogc2VwYXJhdG9yKQogCiBib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0
Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yKQogewot
ICAgIGlmIChtX3JlYWNoZWRFbmRPZkZpbGUpCisgICAgaWYgKG1faXRlcmF0b3JDdXJyZW50ID09
IG1faXRlcmF0b3JFbmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNodW5rLmNsZWFy
KCk7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgd2hpbGUgKG1fc2VnbWVudEluZGV4IDwg
bV9zZWdtZW50TGVuZ3RoKSB7CisgICAgICAgIHdoaWxlIChtX3NlZ21lbnRJbmRleCA8IG1faXRl
cmF0b3JDdXJyZW50LT5zZWdtZW50LT5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGUgZXhpc3RpbmcgY29kZSB0byBjaGVjayBmb3Igc2VwYXJhdG9ycyBkb2Vzbid0IHdvcmsgY29y
cmVjdGx5IHdpdGggYXJiaXRyYXJ5IHNlcGFyYXRvciBzdHJpbmdzLgogICAgICAgICAgICAgYXV0
byBjdXJyZW50Q2hhcmFjdGVyID0gbV9zZWdtZW50W21fc2VnbWVudEluZGV4KytdOwogICAgICAg
ICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgIT0gbV9zZXBhcmF0b3JbbV9zZXBhcmF0b3JJbmRl
eF0pIHsKICAgICAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA+IDApIHsKQEAgLTky
LDE4ICs5MywxNSBAQCBib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVj
dG9yPHVpbnQ4X3Q+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYQogCiAgICAgICAgIC8vIFJlYWQg
dGhlIG5leHQgc2VnbWVudC4KICAgICAgICAgbV9zZWdtZW50SW5kZXggPSAwOwotICAgICAgICBt
X2J1ZmZlclBvc2l0aW9uICs9IG1fc2VnbWVudExlbmd0aDsKLSAgICAgICAgLy8gTGV0J3MgcHJl
dGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJsb2NrLgotICAgICAgICAvLyBGSVhNRTogVGhp
cyBjbGFzcyBzaG91bGQgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUg
c2VnbWVudHMgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgbV9zZWdtZW50ID0gbV9idWZm
ZXItPmRhdGEoKSArIG1fYnVmZmVyUG9zaXRpb247Ci0gICAgICAgIG1fc2VnbWVudExlbmd0aCA9
IG1fYnVmZmVyLT5zaXplKCkgLSBtX2J1ZmZlclBvc2l0aW9uOwotICAgICAgICBpZiAoIW1fc2Vn
bWVudExlbmd0aCkgewotICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKCsrbV9pdGVyYXRvckN1cnJlbnQgPT0gbV9pdGVyYXRvckVuZCkgeworICAgICAg
ICAgICAgbV9zZWdtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChtX3NlcGFyYXRvcklu
ZGV4ID4gMCkKICAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgpKSwgbV9zZXBhcmF0b3JJbmRleCk7CiAg
ICAgICAgICAgICByZXR1cm4gIWNodW5rLmlzRW1wdHkoKTsKICAgICAgICAgfQorICAgICAgICBt
X3NlZ21lbnQgPSBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpOwogICAgIH0KKwog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTEyMCwz
MSArMTE4LDI4IEBAIFN0cmluZyBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGJvb2wgaW5jCiBzaXplX3QgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSkKIHsKICAgICBkYXRhLmNsZWFyKCk7Ci0gICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gbV9z
ZWdtZW50TGVuZ3RoIC0gbV9zZWdtZW50SW5kZXgpIHsKLSAgICAgICAgZGF0YS5hcHBlbmQobV9z
ZWdtZW50ICsgbV9zZWdtZW50SW5kZXgsIHJlcXVlc3RlZFNpemUpOwotICAgICAgICByZXR1cm4g
cmVxdWVzdGVkU2l6ZTsKLSAgICB9CisgICAgaWYgKG1faXRlcmF0b3JDdXJyZW50ID09IG1faXRl
cmF0b3JFbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgc2l6ZV90IGF2YWlsYWJsZUluU2Vn
bWVudCA9IHN0ZDo6bWluKG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5zaXplKCkgLSBtX3Nl
Z21lbnRJbmRleCwgcmVxdWVzdGVkU2l6ZSk7CisgICAgZGF0YS5hcHBlbmQobV9zZWdtZW50ICsg
bV9zZWdtZW50SW5kZXgsIGF2YWlsYWJsZUluU2VnbWVudCk7CisKKyAgICBzaXplX3QgcmVhZEJ5
dGVzQ291bnQgPSBhdmFpbGFibGVJblNlZ21lbnQ7CisgICAgcmVxdWVzdGVkU2l6ZSAtPSByZWFk
Qnl0ZXNDb3VudDsKKworICAgIGF1dG8gY3VycmVudFNlZ21lbnQgPSBtX2l0ZXJhdG9yQ3VycmVu
dDsKIAotICAgIHNpemVfdCByZWFkQnl0ZXNDb3VudCA9IG1fc2VnbWVudExlbmd0aCAtIG1fc2Vn
bWVudEluZGV4OwotICAgIGRhdGEuYXBwZW5kKG1fc2VnbWVudCArIG1fc2VnbWVudEluZGV4LCBy
ZWFkQnl0ZXNDb3VudCk7Ci0KLSAgICBzaXplX3QgYnVmZmVyUG9zaXRpb24gPSBtX2J1ZmZlclBv
c2l0aW9uICsgbV9zZWdtZW50TGVuZ3RoOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBu
dWxscHRyOwotCi0gICAgLy8gTGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEgaXMgaW4gb25lIGJs
b2NrLgotICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSByZW1vdmVkIGluIGZhdm9y
IG9mIGp1c3QgaXRlcmF0aW5nIHRoZSBzZWdtZW50cyBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IGlmIChidWZmZXJQb3NpdGlvbiAhPSBtX2J1ZmZlci0+c2l6ZSgpKSB7Ci0gICAgICAgIHNlZ21l
bnQgPSBtX2J1ZmZlci0+ZGF0YSgpICsgYnVmZmVyUG9zaXRpb247Ci0gICAgICAgIHNpemVfdCBz
ZWdtZW50TGVuZ3RoID0gbV9idWZmZXItPnNpemUoKSAtIGJ1ZmZlclBvc2l0aW9uOwotICAgICAg
ICBpZiAoc2VnbWVudExlbmd0aCA+IHJlcXVlc3RlZFNpemUpCi0gICAgICAgICAgICBzZWdtZW50
TGVuZ3RoID0gcmVxdWVzdGVkU2l6ZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoc2VnbWVudCwgc2Vn
bWVudExlbmd0aCk7Ci0gICAgICAgIHJlYWRCeXRlc0NvdW50ICs9IHNlZ21lbnRMZW5ndGg7Ci0g
ICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IHNlZ21lbnRMZW5ndGg7CisgICAgd2hpbGUgKHJlcXVl
c3RlZFNpemUgJiYgKytjdXJyZW50U2VnbWVudCAhPSBtX2l0ZXJhdG9yRW5kKSB7CisgICAgICAg
IGNvbnN0IHVpbnQ4X3QqIHNlZ21lbnQgPSBjdXJyZW50U2VnbWVudC0+c2VnbWVudC0+ZGF0YSgp
OworICAgICAgICBzaXplX3QgbGVuZ3RoSW5TZWdtZW50ID0gc3RkOjptaW4oY3VycmVudFNlZ21l
bnQtPnNlZ21lbnQtPnNpemUoKSwgcmVxdWVzdGVkU2l6ZSk7CisgICAgICAgIGRhdGEuYXBwZW5k
KHNlZ21lbnQsIGxlbmd0aEluU2VnbWVudCk7CisgICAgICAgIHJlYWRCeXRlc0NvdW50ICs9IGxl
bmd0aEluU2VnbWVudDsKKyAgICAgICAgcmVxdWVzdGVkU2l6ZSAtPSBsZW5ndGhJblNlZ21lbnQ7
CiAgICAgfQogICAgIHJldHVybiByZWFkQnl0ZXNDb3VudDsKIH0KIAorI2VuZGlmCisKIH0KIAot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaAppbmRleCBjOWY1YjA2ZmI0NjU2ZGMyZWFjZDQwNDQxZmYzNDFlMjVmZDRjNzgxLi41
ZDRlNmZlZTU4MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMyLDE0ICszMywx
MyBAQAogCiAjaWYgRU5BQkxFKE1IVE1MKQogCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQotY2xhc3MgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKICAgICBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwpAQCAt
NTgsMTIgKzU4LDEwIEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4m
LCBzaXplX3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7Ci0gICAg
c2l6ZV90IG1fYnVmZmVyUG9zaXRpb24geyAwIH07CisgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRv
ckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07Ci0gICAgc2l6
ZV90IG1fc2VnbWVudExlbmd0aCB7IDAgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAw
IH07Ci0gICAgYm9vbCBtX3JlYWNoZWRFbmRPZkZpbGU7CiAgICAgVmVjdG9yPGNoYXI+IG1fc2Vw
YXJhdG9yIHsgZmFsc2UgfTsKICAgICBzaXplX3QgbV9zZXBhcmF0b3JJbmRleCB7IDAgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi5hMTJhNzQxYTU3MDI1OWZjMjI4YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcg
Rm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9u
LUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6
Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2lt
bXV0YWJsZURhdGEpKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9
KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgy
NDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAy
YWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5n
PiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNo
YXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6
IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5n
RGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgp
IHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0Rh
dGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7
CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVX
aXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdi
YmYzNjRhYmYxODM4YTliODUwLi5mMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1
YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAg
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNV
SW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYx
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24g
c2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJ
bnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBl
bmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2Fz
dChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVT
ZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNb
MF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlm
IChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxl
UGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRh
aW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAg
ICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3Jl
YXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRC
dWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6
ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFl
YWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAz
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09O
LCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5k
ZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1
ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYg
KGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBh
dXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRh
ID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91
c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEu
c2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9
IDA7CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAo
IWtleUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0
byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9
IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJ
bml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0y
NDUsNyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0
IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAg
Ly8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRo
ZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBj
b250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5
NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAg
LTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAg
ICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVh
YTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3
YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3Qg
U3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQz
OTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBh
MTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVu
ZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFu
dEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVp
bGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0g
Z192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19i
eXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0
OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
IAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwg
Ym9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1
ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4
LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykp
OwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25z
dAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRH
UmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRl
ciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAg
IH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0
dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMz
N2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxG
b250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBP
cmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9y
bURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxi
YWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6
T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBz
eW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRp
Y2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEg
PSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsg
fSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4
IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUz
OGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5
ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9u
RmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
PSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
LCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0g
VmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFs
bGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBz
dGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZv
bnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2Fj
aGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4u
ZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQs
NyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRo
aXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0
YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBG
b250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRh
OworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAg
ICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAg
IFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEz
ZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkp
KTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChX
VEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRl
eCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0
YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVs
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVm
ZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5j
b2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5
Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUp
LCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3
ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgw
ZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMg
Y29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29s
IHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0g
YnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2Yo
dmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQx
NihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZf
dCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBA
IC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYg
dmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWdu
YXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAt
MTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZU
b1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNv
bnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApA
QCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3
b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRv
dGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBA
IGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNv
bnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAg
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1
NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5
ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmls
ZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBp
cyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUs
CiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMg
dHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citi
b29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZp
bGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09G
RgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZl
biBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZm
ZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmlu
ZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUz
ZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1z
dHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNP
Tjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUz
Li42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFs
dWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNP
TiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRh
VHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAg
IGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
aW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2Ug
aWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAg
ICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRh
KCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6
YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmlu
ZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9
CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAg
ICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lv
bnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4
cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgp
IHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAg
ICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3Jl
cXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAg
ICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250
ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVh
bWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwot
ICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJl
c3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUo
cmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQg
b25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBA
IC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAg
Zm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0p
IHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRL
ZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtl
eXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0
QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0
byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAg
ICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5T
RGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUz
LDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVz
dHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRy
PE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1
ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5z
ZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVu
dHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCku
Ynl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+
cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDog
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAg
ICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50
aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
a2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3Qo
QVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVz
dC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
bnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50
aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3Ig
PSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29u
dGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0
ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5
LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tX
ZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQ
YXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29t
cGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdh
dGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0Fz
eW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBA
QCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBs
b25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxs
RGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAK
ICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlh
MC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0y
MTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRh
KFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
c2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZm
ZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jl
c2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9w
YXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0
YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5
N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZGY2MmIzZDczNjNlZWU2OWVlZTI3
MjJhNGNkMDZhMmRhNDlhNjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPFNoYXJlCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0KIApAQCAt
MjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzOCw3IEBAIERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6
ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNl
NjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVz
cG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsK
ICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFk
M2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDEx
NmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEs
NiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxh
dGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19m
b250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRl
eCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhi
NTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMx
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVG
cm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXpl
X3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZl
ciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0co
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0g
MzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERh
dGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsK
ICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJ
bWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZl
ciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mg
a25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVh
dGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0
ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJl
ZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRl
c0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBi
ZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9j
ayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUs
IHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2lu
dGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVy
Q2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNo
YXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRh
dGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJl
Y3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3Mp
KTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRl
NmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95
RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9
IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0
KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcw
OWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRi
ZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcg
KzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250Lmdl
dCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0
YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1
YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZj
b24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBh
dXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAg
ICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYy
NTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwx
MCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVh
bGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZv
bnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250
Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAog
ICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYy
ZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5
ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAm
JiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2
NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDks
NyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgp
IGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5j
b2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9j
a2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWly
b0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3
ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRm
ZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0
MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBj
b25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNH
U3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaAppbmRleCBmMTYwNzE1YmRhNzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1MGJkMjU3Li45
NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIwNDdhOTFiYzczZDA4MTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1
aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1Jl
ZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4y
OWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRh
U3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0
YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBh
dXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhp
cywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0
byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMs
IGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7
CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRl
Y29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVy
LT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGUxYTIxYTI5NzQxOGI3YTUx
NTgwMjgzZDU1OTA3MDUwY2U1NTJiOTEuLmQ1NmIxOTg1MTQyNTc2YTc1ZTllZDExMWQwZjY3OTJm
OWM2YTBiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0zNjQ0LDcgKzM2NDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAg
ICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCku
dXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
LSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1Ro
aXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXls
b2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMu
LmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsK
ICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9Owog
CiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNv
bnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3Bv
aW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9p
ZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3Np
emUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0
LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAg
ICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsK
KyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGlj
IHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVy
KQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1l
bnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJr
dXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJ
Zk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQp
OwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4g
cGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5k
ZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMzUyYTMzZmNhNDEy
MWYwOGEwZGNhYzRmMjQ1YWZmNjJhMjZkYzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAgICAsIG1fcGF5bG9h
ZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQogICAgIHsK
ICAgICB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMi
X3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5j
SWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRh
MWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0
YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBi
b2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50
ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBi
dWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcx
OGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUx
ZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRh
IGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhi
Y2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRv
cHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZE
b2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21w
dXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRl
eCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVm
OTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRh
YmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9u
Q291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsx
XTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24g
dmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0Nv
cnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGlj
c0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFs
aWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
SW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVk
U2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09m
ZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAg
ICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5
IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsK
IAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2Vt
Ymx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkp
CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAg
IH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQg
TWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAor
ICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2
YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAg
ICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5
cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3Nl
bWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAg
LTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUg
dmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpv
bnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAg
Y29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRp
Y2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0
aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtj
b3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMq
IG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRo
Q29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBA
IHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhH
bHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2Yu
LjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9m
b250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJj
M2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5
MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBA
IHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUg
T1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0
KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkg
fCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIs
IHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkg
PCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAg
IHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQg
YXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBw
b3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZh
bGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQp
IGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3
LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVC
YXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlw
aCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUlu
ZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29u
c3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAg
ICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEu
LjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBw
ZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBp
biBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9u
dFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1
c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wg
cmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVG
b250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcm
IGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNp
emVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRI
ZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0
YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9
CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRv
IHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
KQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJl
bmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJj
MTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50
OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3Mzdj
MWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcx
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9m
ZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxl
PihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7
IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRp
b25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAv
LyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0
ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4K
IAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRp
b25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxl
ID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRh
YmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExv
b2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9v
a3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNv
dW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIw
OCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlz
dEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZl
YXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJl
T2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2
X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwg
JmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3Vu
dDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tp
XSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAg
c3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBm
ZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBm
ZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5k
ZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJs
ZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBs
YW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBA
IC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAg
ICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9w
ZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMx
MCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRT
Y3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3Vu
dCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIx
LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQp
OwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZh
dWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2Ny
aXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwx
MSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNl
dDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZl
ciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxp
c3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9m
ZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2Ny
aXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVM
aXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVM
aXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3Jp
cHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAK
LSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFi
bGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3
IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVy
ZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0g
ZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
dmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhz
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlw
ZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Okho
ZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNh
bERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlw
ZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJl
ZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZo
ZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAg
IGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdT
VUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFi
bGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEy
OTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0
aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUg
PSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1l
QW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYx
NzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRm
b3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkz
MTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0g
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4u
NGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0
CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXgg
NmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5
Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAt
NTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2Jq
ZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhk
YywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBv
bGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0g
R2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAw
LCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMs
IG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVj
dGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
aW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJi
OTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0
UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9t
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVm
ZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRh
KCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1f
aW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3
OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAg
ICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8g
b25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0g
ZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRh
LT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFT
dGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAg
IG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2Rl
U2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3
YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19z
YXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAn
XDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVn
X3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFy
a2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
IH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0Uo
TENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJk
N2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNm
YzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAg
LTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3Jp
ZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0g
b3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxl
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0
ZDA5NjIwMDU2OTE2NmQ3NTE5NjM4OTJjODg5ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwx
MCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJk
IHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0g
Y29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRh
W2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRl
bnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Nd
IGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmli
dXRlZFN0cmluZ107CiAgICAgfQogCkBAIC00ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmRhdGFJblJURkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRh
dGFJblJURkZvcm1hdCkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZToo
TlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAg
IGlmICghY29udGVudC5kYXRhSW5IVE1MRm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0Rh
dGEgKmh0bWxBc0RhdGEgPSBbKE5TU3RyaW5nICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBA
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
MTMxZjIxNGI4ZGEuLjNiMjhiYmQxMDI1MGFhY2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBA
IC0xMTYsMjMgKzExNiwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAg
ICBhdXRvIHdlYkFyY2hpdmVUeXBlID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigi
QXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAg
ICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3
ZWJBcmNoaXZlVHlwZS5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQt
PmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
Ok5TUGFzdGVib2FyZFR5cGVSVEZEXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOndlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBp
ZiAod2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwog
ICAgICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAg
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxG
b3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29u
dGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGll
bnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6
d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50
VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21E
YXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3Jp
Z2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0Fs
cmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgp
XTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkx
OTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEy
ICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQg
dHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHRO
UyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVi
b2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFz
dGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
KSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEm
IGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsK
IAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBm
b3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBA
IC0zNDYsNyArMzQ2LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldy
aXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JU
eXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3Rh
dGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3Rl
Ym9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChp
bmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBl
XSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0g
c2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAg
ICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CmluZGV4IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUx
ZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRf
dCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aElu
Qnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRz
KSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+
KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6
OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZl
MjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBj
bGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBA
IC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1l
bnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29s
IGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44
MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cApAQCAtMzgsNyArMzgsNyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2
Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hh
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09
IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ry
b25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAg
ICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
c3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAg
ICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRl
OwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYz
NWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQg
ZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vz
c0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewog
ICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHBy
b2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAg
ICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnBy
b2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlT
dGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewog
ICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEg
dXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVt
b3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3
ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1v
dmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5
NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQw
MzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJl
cXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFu
ZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1
M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAg
dm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwot
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIp
LCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
Y29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0
NTVhLi5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2
LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5k
YXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShm
aWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0
cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlz
IHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3Jp
dGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAg
ICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNp
emUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmls
ZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3
cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAg
ICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNm
NmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5
MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVz
dWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7
CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJl
YWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFk
LCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29u
dGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCku
ZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5
NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIx
MywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBN
b2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVz
cG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJp
bmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlm
ICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUlu
c3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+
ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZp
Y2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2Vy
dGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBA
IC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJl
c3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNw
b25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVk
YzVkNjQwZDA0ZDRiZDQ1Li5hNGUwYWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCkBAIC03OCwxMSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQo
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAg
IGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1f
aXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRh
KTsKICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFn
bWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7
CisgICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0Rh
dGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAg
ICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQor
ICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5
Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJi
YTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEz
MSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBj
bGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJl
c3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0
YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxw
dHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlh
NjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNX
U2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZp
bGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRl
c2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9
CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
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
MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5
YmRkMjAxYzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVu
ZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZl
ci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlk
ZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYx
YzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6
ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJk
ZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1Njgz
YWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcg
KzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9y
bWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RG
Ojpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJv
ZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02
NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3Qg
U3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQu
cmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5
LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0
YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDku
LmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNT
dG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVy
KQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07
CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVy
LCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVh
ZDhmMGI3ODA3ZDc0MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkx
ZDMxY2E5ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVS
TERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJl
c3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZh
bHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFt
X25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4u
MTE3YmMxN2MzMjYxNDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4
IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2Ji
NmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAg
U2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4oKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7
IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAg
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5
Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2
Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4
LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1
YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkw
NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1
NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0
ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAg
ICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3
Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkx
NjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hp
dmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6
OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsK
KyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQg
YnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0
YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBj
YjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNh
MjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUg
ZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3
aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCks
IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZh
Y2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZi
ODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRy
ZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2Rl
ZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRl
eHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmlu
ZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcw
ZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFu
ZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hh
cmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVm
ZmVyKCkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJl
ZigpOyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxs
b2NhdG9yKCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0
ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNl
KQotewotICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNv
dXJjZSwKLSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UK
LSAgICAgICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9j
YXRlCi0gICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3Vy
Y2VEZWFsbG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQot
ICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
ICZjb250ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2Vk
IGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENG
KQotICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2Nh
dG9yKHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4
PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0
ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwg
c2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJl
c291cmNlKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBb
c2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAg
fSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVh
YmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkg
KzEwNCw3IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVk
TWVtb3J5PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3Vy
Y2U6On5TaGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJl
YWJsZVJlc291cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVh
dGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQg
U2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9
Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmlu
ZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRi
Nzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNs
YXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3Vy
Y2U+IHsKK2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpA
QCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVz
b3VyY2U7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBT
aGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNo
YXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVk
TWVtb3J5OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAg
ICAKKyAgICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3Np
emU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2Vj
Zjg2YWVjYmQxOWJiNjRkN2IuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNl
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9
PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAg
ICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90
IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNv
ZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNv
cmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNl
Qm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3
aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0
aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
aGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsx
NTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1
ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFs
dWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdU
Rk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwg
V1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAz
MSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
Cit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNT
aGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJk
ZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYg
KzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7
CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUo
RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1
ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBA
QCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3Vz
dG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3Rv
bURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7
CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0
YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVy
PFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVk
ZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9u
dEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4u
YzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIg
QEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1h
Z2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJp
bmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZl
Yzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5T
RmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdl
KGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xv
c2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRm
NDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAt
MTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0
d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBs
eShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90
Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25z
dCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUz
MTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2My
OTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVu
dDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVX
cmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMt
PmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERh
dGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVk
UmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZh
NDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBA
QCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdo
bGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tf
V0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGln
aHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRv
IHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhI
aWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0Omlu
TmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93
ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91
cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5h
dGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVz
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3
NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsy
MTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9u
LCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAg
ICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRh
X3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAg
ICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAg
ICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYx
NmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAo
IW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0
PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgp
XTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2Vi
VmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVj
Ny4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAo
IXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cigwKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNp
emUpOwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5
cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChjb25uZWN0aW9uLCBw
YXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291bnQpOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
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
ZVByb3h5LmgKaW5kZXggNTNiYjZkNWRkMTBjYjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4u
ODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZhOGY5NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0
M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0
aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNE
YXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsg
bV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYw
NzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYx
ZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4Yjli
NDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJm
YjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9d
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRv
TGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0
KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhOGU5MGU0MjlhNmVjZTEz
Njg3YjlmOTFiYzczODJjYTdjYjBmZjNkLi42NWU1ZDgyYTM1N2JjYmFhZjk1MDkwMzg1ZDJhZWRh
MmVkZjM0MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wp
Y2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2Vu
ZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEg
KmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdp
bikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk0LDcgKzY1
OTQsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihV
SVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQo
KSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsK
IApAQCAtNzU2NSw3ICs3NTY1LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyog
ZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmlu
ZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZp
bGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsK
LSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFy
ZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3Nl
bGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6
Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVm
YjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1h
Z2VIYW5kbGUKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1v
cnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAg
cGFnZUNsaWVudCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2
ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJk
NzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFn
ZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0
MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6
OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgp
KSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5j
cmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUu
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNo
YXJlZE1lbW9yeUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNp
emUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlz
TnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9y
eTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0
YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNo
aXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hp
dmVIYW5kbGUuZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVu
c2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3Jp
Z2luSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIw
OTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSAr
MzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBm
YWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5
ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJm
ZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBA
IC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFtt
X2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJv
YXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdh
dGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQg
PFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAg
ICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdl
dCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxl
ciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFu
Z2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5
cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAg
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERh
dGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlU
eXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2
OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgy
YTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAg
ICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNy
ZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
IHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5h
cHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFy
cmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMx
OWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAw
N2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFn
ZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2Vi
Q29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0
aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4
MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODlj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJl
bGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAg
ICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAg
ICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAg
ICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgp
LCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVy
KTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0
YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIq
KWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxl
YXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBt
X2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCks
IHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGlu
Z05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNi
ODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2Rj
ZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3Jl
YXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5
N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFi
bGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAy
NTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3
MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lz
UHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNl
bmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAo
VU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBk
OTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRv
UGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2Us
IHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2
ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2
b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lk
IHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRm
MDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0g
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21D
b250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRh
dGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUuLjZmM2Y1
NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRU
eXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1Jl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4g
b3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBh
c3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBh
c3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAg
ICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFz
dGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
QEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogICAgIGlmIChpcGNI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChp
cGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAq
PihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAg
aWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0
YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKQEAgLTMyMiw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNCw3ICs0
MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBh
c3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwg
MCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlC
dWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSks
IGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0
ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0
ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3
ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3
ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJl
ck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyAr
ODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1
ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4
Nzc0MzFhMmIxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXpl
X3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAg
aWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hp
dmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0
Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJj
YTdkMDNhYzMxMzNiN2UxZWU5Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpz
b3VyY2UoKSBjb25zdAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5l
bmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3Qg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRk
NTljZmE3MTA2ZjA4NDQyZTNmYjM5OTNiMWE4ODA4ODFmN2JhMzYuLjliOWE5ODZjMGM5NmE4M2Fj
ZjViODI5ZTczNjM5MDcxNzU1YzZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM1LDcgKzc3MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVt
b3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkg
PT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5v
KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFu
ZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3Jv
bGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEy
ODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2
MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2Fy
ZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29w
eUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNh
MmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5
MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJB
TShtb2RlKTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFM
UykKLSAgICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNl
CiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIz
OTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNi
NjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRh
ICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEg
PSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5k
YXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBk
YXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0
cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDli
Yzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5
MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBm
aW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
aW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMx
NzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAt
NDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxl
bWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3Qg
aW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkx
NDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3
NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2
MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1
ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
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
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThm
NDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMw
YzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
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
ICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFy
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
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFl
MWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0
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
eS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJm
ZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5X
ZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIp
OwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlT
dHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92
ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4
NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1
ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
aApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJ
V2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYmQ1ZDUzODIwNTVjOTI3MTk1Nzk2N2U1ZmJmYmUy
NjJhZThmNmM0Li5mZDlmNmYzYmYwNjI3OWQ3ZmUzZTQzYWZkZGRkOWJhNWE0YzViMjdmIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgZmxhdHRlbmluZyBhIFNoYXJlZEJ1ZmZlciB3aGVuIHJlYWRpbmcgcmVh
ZGluZyBpdCB0aHJvdWdoIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDgxCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1NzMzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBNY0Nvcm1hY2su
CisKKyAgICAgICAgQWRkIEFQSSB0ZXN0cy4KKyAgICAgICAgQVBJIHRlc3RzIG9yaWdpbmFsIGRh
dGEgY29tZSBmcm9tIHRoZSBvcmlnaW5hbCBidWcgdGhhdCBhZGRlZAorICAgICAgICBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlciAoYnVnIDU5OTQ2KSBhbmQgdGhlbiBleHBhbmRlZC4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJlYWRB
bGxDaHVua3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tDaHVua3MpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tEYXRhSW5SYW5nZSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoKKwogMjAyMS0xMS0yMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xk
IGNvbmN1cnJlbnQgZGlzcGxheSBsaXN0IGxvZ2ljIHRoYXQncyBubyBsb25nZXIgbmVjZXNzYXJ5
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDM2OTI5NzJkZWFhNzY5NGExYjZjMWZmZmU0MThlNWZhNDcxNTI2NGMuLjFiNzM2
M2E4MjcyNWM3Mzg1NGQ0OTk2ODQwM2JjMGZhNDU0YTY3NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMSw2ICszMSw5
IEBACiAjaW5jbHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpZiBFTkFCTEUoTUhU
TUwpCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oPgorI2VuZGlm
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+CiAKQEAgLTQwLDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNT
RVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
U3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVt
cHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9H
VChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwg
Y29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7
CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgwLDEyICs4MywxMyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZm
ZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1Niw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVy
LT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVy
LT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAg
IEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCks
IGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
ICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzIsMzAg
KzE3NiwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYics
ICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gn
fTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7
CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsK
LSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3
KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZl
ci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAg
ICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRv
IGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAi
YWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAg
ICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1
ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRh
KCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wu
c2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6
ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hp
amtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5z
aXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAg
ICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigp
KTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIw
NywxNSArMjE0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAg
ICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJu
IGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEu
Z2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYics
ICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVY
UEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwg
eyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9
IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQo
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKQEAgLTIyOSw0
ICsyMzYsMzA5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKICAgICBF
WFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKK1RFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCByZWFkKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAi
VGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CisKKyAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFy
ZWRCdWZmZXIucmVhZCg0LCAzKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7
CisgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CisKKyAg
ICAgICAgZGF0YSA9IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDEwMDApOworICAgICAgICBFWFBFQ1Rf
RVEoZGF0YS5zaXplKCksIDE4dSk7CisKKyAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhkYXRhLmRh
dGEoKSwgMTgpLCAiIGlzIGEgc2ltcGxlIHRlc3QuIik7CisgICAgfTsKKyAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKworICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkrKykKKyAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDEpOworICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisKKyAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCisgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKK30KKworI2lmIEVO
QUJMRShNSFRNTCkKKy8vIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHVuaXQtdGVzdHMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNp
emVfdCBOID4KK2NvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsg
cmV0dXJuIE47IH0KKworc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJp
bmc+KiBjaHVua3MsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCit7CisgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5k
YXRhKCkpOworICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0
cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKKyAgICB3aGlsZSAoIWNo
dW5rLmlzTnVsbCgpKSB7CisgICAgICAgIGNodW5rcy0+cHVzaF9iYWNrKGNodW5rKTsKKyAgICAg
ICAgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFs
bGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBjaGVja0No
dW5rcyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmc+JiBjaHVua3MsIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzW10sIHNpemVfdCBleHBlY3RlZFNpemUpCit7CisgICAgaWYgKGNodW5r
cy5zaXplKCkgIT0gZXhwZWN0ZWRTaXplKSB7CisgICAgICAgIEVYUEVDVF9FUShjaHVua3Muc2l6
ZSgpLCBleHBlY3RlZFNpemUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaHVua3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGNodW5rc1tpXSAhPSBleHBlY3RlZENodW5rc1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrRGF0YUlu
UmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBs
ZW5ndGgpCit7CisgICAgQVNTRVJUX0VRKGRhdGEuc2l6ZSgpLCBsZW5ndGgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShkYXRhW2ld
LCBzdGF0aWNfY2FzdDx1aW50OF90PihzdGFydCArIGkpKTsKK30KKworVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKK3sKKyAgICBhdXRvIGNoZWNr
ID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICAgICAgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBceDExXHgxMiIpOwor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OworICAgICAgICBFWFBFQ1RfVFJVRShjaHVua1Jl
YWRlci5uZXh0Q2h1bmsob3V0KSk7CisgICAgICAgIGNoZWNrRGF0YUluUmFuZ2Uob3V0LCAwLCAx
Nik7CisKKyAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwor
ICAgICAgICBjaGVja0RhdGFJblJhbmdlKG91dCwgMTksIDIzNyk7CisKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKKyAgICB9OworICAgIHVpbnQ4X3Qg
ZGF0YVsyNTZdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAg
IGRhdGFbaV0gPSBpOworCisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCAyNTYpOworICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDI1NjsgKytpKSB7CisgICAgICAgIGNoYXIgYyA9IGk7CisgICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZjLCAxKTsKKyAgICB9CisgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKK30KKworVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCit7CisgICAgY29uc3Qg
Y2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKKworICAg
IGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgICAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsK
KworICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJp
bmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKKyAgICAgICAgRVhQRUNUX0VRKGNodW5rLCAiVGgiKTsK
KworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICAgICAgc2l6ZV90IHJlYWQgPSBj
aHVua1JlYWRlci5wZWVrKGRhdGEsIDMpOworICAgICAgICBFWFBFQ1RfRVEocmVhZCwgM3UpOwor
CisgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CisKKyAg
ICAgICAgcmVhZCA9IGNodW5rUmVhZGVyLnBlZWsoZGF0YSwgMTAwMCk7CisgICAgICAgIEVYUEVD
VF9FUShyZWFkLCAxOHUpOworCisgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCks
IDE4KSwgIiBpcyBhIHNpbXBsZSB0ZXN0LiIpOworCisgICAgICAgIC8vIEVuc3VyZSB0aGUgY3Vy
c29yIGhhcyBub3QgY2hhbmdlZC4KKyAgICAgICAgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1
bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKKyAgICAgICAgRVhQRUNUX0VRKGNo
dW5rLCAiICIpOworCisgICAgICAgIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4
U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CisgICAgICAgIEVYUEVDVF9FUShjaHVuaywgIiBh
IHNpbXBsZSB0ZXN0LiIpOworCisgICAgICAgIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5r
QXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNo
dW5rLmlzTnVsbCgpKTsKKyAgICB9OworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworCisgICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQor
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hl
Y2soc2hhcmVkQnVmZmVyKTsKKworICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkg
Kz0gMikKKyAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwor
ICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworfQorCitURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCit7CisgICAgY29uc3QgY2hh
ciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9y
eSB0aGVyZSBpcy4iOworICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgeworICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKKyAgICAgICAgY29u
c3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgi
LCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwg
InMuIiB9OworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5r
czFXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFy
YXRvcikpKTsKKworICAgICAgICBjaHVua3MuY2xlYXIoKTsKKyAgICAgICAgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvcltdID0geyAiVGhpIiwgInMgaSIsICJz
IHRoZSBtb3N0IHJpIiwgImRpIiwgImN1bG91cyBoaSIsICJzdG9yeSB0aGVyZSBpIiwgInMuIiB9
OworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiLCB0cnVl
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5r
czFXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvcikp
KTsKKworICAgICAgICBjaHVua3MuY2xlYXIoKTsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAiICIsICIgdGhlIG1v
c3QgcmlkaWN1bG91cyBoIiwgInRvcnkgdGhlcmUgIiwgIi4iIH07CisgICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
Y2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcikpKTsKKworICAgICAgICBjaHVu
a3MuY2xlYXIoKTsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MyV2l0
aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAiIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlz
IiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtz
LCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczJXaXRoU2VwYXJhdG9yKSkpOworCisgICAgICAgIGNodW5rcy5jbGVhcigpOwor
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9y
W10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJvcnkgdGhlcmUgaXMuIiB9
OworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzM1dp
dGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9y
KSkpOworCisgICAgICAgIGNodW5rcy5jbGVhcigpOworICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJp
ZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMuIiB9OworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIsIHRydWUpOworICAgICAgICBFWFBFQ1RfVFJV
RShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IsIGFycmF5
c2l6ZShleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yKSkpOworICAgIH07CisgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSsrKQorICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOworICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisKKyAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCisgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKK30KKworVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKK3sKKyAg
ICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUg
bW9zdCByaWRpY3Vsb3VzIGhpc3RvcnkgdGhlcmUgaXMuIjsKKyAgICAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcihzaGFyZWRC
dWZmZXIucHRyKCksICJpcyIpOworICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5u
ZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKKyAgICAgICAgRVhQRUNU
X0VRKGNodW5rLCAiVGgiKTsKKworICAgICAgICBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVu
a0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOworICAgICAgICBFWFBFQ1RfRVEoY2h1
bmssICIgIik7CisKKyAgICAgICAgY2h1bmtSZWFkZXIuc2V0U2VwYXJhdG9yKCJoZSIpOworICAg
ICAgICBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFG
YWxsYmFjaygpOworICAgICAgICBFWFBFQ1RfRVEoY2h1bmssICIgdCIpOworCisgICAgICAgIGNo
dW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNr
KCk7CisgICAgICAgIEVYUEVDVF9FUShjaHVuaywgIiBtb3N0IHJpZGljdWxvdXMgaGlzdG9yeSB0
Iik7CisKKyAgICAgICAgLy8gU2V0IGEgbm9uIGV4aXN0aW5nIHNlcGFyYXRvci4KKyAgICAgICAg
Y2h1bmtSZWFkZXIuc2V0U2VwYXJhdG9yKCJ0Y2hpbnRhIik7CisgICAgICAgIGNodW5rID0gY2h1
bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CisgICAg
ICAgIEVYUEVDVF9FUShjaHVuaywgInJlIGlzLiIpOworCisgICAgICAgIC8vIFdlIHNob3VsZCBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHNvIGFueSBzdWJzZXF1ZW50IGNhbGwgdG8gbmV4
dENodW5rIHNob3VsZCByZXR1cm4gbnVsbC4KKyAgICAgICAgY2h1bmtSZWFkZXIuc2V0U2VwYXJh
dG9yKCIuIik7CisgICAgICAgIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKHRydWUpOworICAgICAgICBFWFBFQ1RfVFJVRShjaHVuay5p
c051bGwoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1w
bGVUZXh0ID0gImRvZyI7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgY29uc3Qg
Y2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICIiIH07Cisg
ICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyIpOworICAgICAgICBFWFBFQ1RfVFJVRShjaGVj
a0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXpl
KGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcikpKTsKKworICAgICAgICBjaHVua3MuY2xl
YXIoKTsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJh
dG9yW10gPSB7ICJkb2ciIH07CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiZG9nIiwgdHJ1ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNo
dW5rcywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVu
a3NXaXRoU2VwYXJhdG9yKSkpOworICAgIH0KKworICAgIC8vIEVuZHMgd2l0aCByZXBlYXRlZCBz
ZXBhcmF0b3JzLgorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9
ICJCZWF1Y291cCBkZSBjaGF0cyBjYXRjYXRjYXRjYXRjYXQiOworICAgICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNl
cGFyYXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CisgICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Iik7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNr
Q2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOworCisgICAgICAgIGNodW5rcy5jbGVh
cigpOworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0
b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzIGNhdCIsICJjYXQiLCAiY2F0IiwgImNhdCIsICJj
YXQiIH07CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0
IiwgdHJ1ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0
ZWRDaHVua3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJh
dG9yKSkpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LlxyXG5Ob3RoaW5nIHNwZWNpYWwuXHJcbiI7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJUaGlzIGlzIGEg
c2ltcGxlIHRlc3QuIiwgIk5vdGhpbmcgc3BlY2lhbC4iIH07CisgICAgICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CisgICAgICAgIHJlYWRB
bGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hl
Y2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rcywgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtz
KSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4
dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuXHJcbk5vdGhpbmcgc3BlY2lhbC4iOworICAgICAg
ICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1tdID0geyAiVGhpcyBpcyBhIHNpbXBs
ZSB0ZXN0LiIsICJOb3RoaW5nIHNwZWNpYWwuIiB9OworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CisgICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tD
aHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rcywgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzKSkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9
ICJTaW1wbGUgbGluZSB3aXRoIG5vIEVPTC4iOworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZENodW5rc1tdID0geyAiU2ltcGxlIGxpbmUgd2l0aCBubyBFT0wuIiB9OworICAgICAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0
cmxlbihzaW1wbGVUZXh0KSk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7
CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rcywgYXJyYXlzaXpl
KGV4cGVjdGVkQ2h1bmtzKSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgY29uc3QgY2hhciog
Y29uc3Qgc2ltcGxlVGV4dCA9ICJMaW5lIHRoYXQgaGFzIGEgRU9MXHJcbmFuZCB0aGVuIGVuZHMg
d2l0aCBhIENSXHIiOworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1td
ID0geyAiTGluZSB0aGF0IGhhcyBhIEVPTCIsICJhbmQgdGhlbiBlbmRzIHdpdGggYSBDUlxyIiB9
OworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5n
PiBjaHVua3M7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rcywg
YXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzKSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJSZXBlYXRlZCBDUnMgc2hvdWxkIG5vdCBjYXVz
ZSBwcm9iZW1zXHJcclxyXG5TaG91bG4ndCB0aGV5PyI7CisgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJSZXBlYXRlZCBDUnMgc2hvdWxkIG5vdCBjYXVzZSBw
cm9iZW1zXHJcciIsICJTaG91bG4ndCB0aGV5PyIgfTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworCisgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOworICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNr
Q2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MsIGFycmF5c2l6ZShleHBlY3RlZENodW5rcykp
KTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IkVPTFxyXG4gYmV0d2VcclxuZW4gc2VnbWVudHMiOworICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBleHBlY3RlZENodW5rc1tdID0geyAiRU9MIiwgIiBiZXR3ZSIsICJlbiBzZWdtZW50cyIgfTsK
KyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworCisgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4g
Y2h1bmtzOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MsIGFy
cmF5c2l6ZShleHBlY3RlZENodW5rcykpKTsKKyAgICB9Cit9CisjZW5kaWYKKwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgK
aW5kZXggZTVkOTA5MzVkM2NjYzg2ZDU2YzU1MjZiYWMyNDNlMzNkOGU2YzRjZC4uNjQwMTE5YmRl
NmZjZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC00Myw0ICs0Myw5
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGVtcEVtcHR5RmlsZVBhdGg7CiB9OwogCisjaWYg
RU5BQkxFKE1IVE1MKQorY2xhc3MgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworfTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVk
NGViMTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445180</attachid>
            <date>2021-11-26 00:54:52 -0800</date>
            <delta_ts>2021-11-30 19:23:19 -0800</delta_ts>
            <desc>ContiguousSharedBuffer for EWS</desc>
            <filename>bug-233030-20211126195449.patch</filename>
            <type>text/plain</type>
            <size>418002</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uOTA1MGJmNmM1MTQ3NjEwOWI1ZmVmNzlkZWZmMDQz
NDkzZjQyMDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTExLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0
aW9uIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTc0OGRi
ZTI5ZWFiY2JlYzQyYjI0OWY4YzY1Y2UyNjQ4NzNiNjc1MS4uNDkxMGEyOTZlY2M5NmRhNTEwNDY1
ZWMxNTFmYWE3YTAyNDQwOTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMTAgQEAKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpk
ZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVz
b3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9u
dD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNo
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0
YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
QVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06
CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
biBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAo
YWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRF
ZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCisyMDIx
LTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZv
aWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEg
U2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM0MDEKKyAgICAgICAgcmRhcjovLzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIGRpcmVjdGx5IHdyYXAgYSBTaGFy
ZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlciB1c2luZworICAgICAgICBTaGFyZWRNZW1vcnk6
OmNyZWF0ZVNoYXJlZEJ1ZmZlciBpbnN0ZWFkLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2
YWJsZSBiZWhhdmlvdXIgb3RoZXIgdGhhbiB0b3RhbCBtZW1vcnkgc2l6ZSByZWR1Y3Rpb24uCisK
KyAgICAgICAgRmx5LWJ5IGZpeDogY2hlY2sgZm9yIG51bGwgd2hlbiBtYXBwaW5nIGEgU2hhcmVk
TWVtb3J5IHRvIGFuIElQQyBoYW5kbGUKKyAgICAgICAgaW4gYSBjb3VwbGUgb2Ygc3BvdHMuCisK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKTogUmVmYWN0b3IgbWV0aG9k
LCByZW1vdmluZworICAgICAgICBwbGF0Zm9tIHNwZWNpZmljIGNvZGUgYW5kIHVzaW5nIERhdGFT
ZWdtZW50OjpQcm92aWRlciBpbnN0ZWFkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVu
aW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBI
YXJkZW5pbmcgY29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKworMjAyMS0xMS0yMSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcg
YW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDAxCisg
ICAgICAgIHJkYXI6Ly84NTYzNzcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8g
YSBTaGFyZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIgaW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3Vy
IG90aGVyIHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1i
eSBmaXg6IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJ
UEMgaGFuZGxlCisgICAgICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmg6IE1ha2UgU2hhcmVhYmxlUmVzb3VyY2UgdXNlIHRocmVh
ZC1zYWZlIHJlZmNvdW50LgorICAgICAgICBBIFNoYXJlYWJsZVJlc291cmNlIG9uY2UgY3JlYXRl
ZCBpcyBpbW11dGFibGUgYW5kIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0CisgICAgICAgIGl0c2Vs
ZiBoYXMgdGhyZWFkLXNhZmUgcmVmb3VudGluZy4gRGVsZXRpbmcgdGhlIG9iamVjdCBvdXRzaWRl
IHRoZSBtYWluIHRocmVhZAorICAgICAgICBpcyBzYWZlLgorICAgICAgICBNYWtlIG1lbWJlcnMg
Y29uc3QuCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFjdG9y
IG1ldGhvZCwgcmVtb3ZpbmcKKyAgICAgICAgcGxhdGZvbSBzcGVjaWZpYyBjb2RlIGFuZCB1c2lu
ZyBEYXRhU2VnbWVudDo6UHJvdmlkZXIgaW5zdGVhZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IEhhcmRlbmluZyBjb2RlLCBjaGVja2luZyBmb3IgbnVsbGFiaWxpdHkuCisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgSGFyZGVuaW5nIGNvZGUsIGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisKIDIwMjEtMTEtMjUg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFwaGlj
c0NvbnRleHRHTCBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgY2xhc3MgZGVm
aW5pdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MDFkNTAxYWIzODAxN2Yx
ZDhmOWU4MWM5YmVmZGMyZDdmNmYxNmZlLi5mMzUyOWRlYjcyZjFlZjVkZDdlMTg0ODliMDRhYmRh
ZTRlNDM2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRh
UmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVw
cmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmll
dy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVy
Ol0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291
cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTExLTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gY2hlY2sg
bG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCmluZGV4IGNhZDYxYTc3YTAxMGNkZDg3MGYwYTVjNjdkMjEzOTY5NjZiYjYwYWMu
LjUyOTQ5MzE5ODI4ZTRlMTU2MzgyYjkzN2FmOWJjMmNhNWViZTQxY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVt
b3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2
ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRh
U291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJS
ZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIw
MjEtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFYOiBVc2UgT2JqZWN0SWRlbnRpZmllciBmb3IgQVhJRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAy
MzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgy
MWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAg
ICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYg
YnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAg
ICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJv
bVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRh
KSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0
YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAy
MzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2Mw
OWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0g
ImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0
YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNl
bnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0
ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
bnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2Nj
YTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYz
YzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0lt
YWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRz
Om5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNC
aXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAg
ICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdU
eXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgw
NzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01
MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFs
Qm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0
ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAg
ICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0g
KGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJl
c3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5k
ZXggOTA5OGUwNWFmNGM4NDMzYjNkMTNiMzk1NjUwNjRhOWMxNTQzMzg3ZC4uNmI5MTNlNDcwM2Yw
MTNjMTNjZTdhNjIwYmEwOGVhYzljNTM2MTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAKQEAgLTMwMCwxMyArMzAwLDEzIEBAIHZvaWQgRE9NQ2FjaGU6OmFk
ZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBX
VEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3Bv
bnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3VzKCkp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBET01DYWNo
ZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
LCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2
b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRp
b24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpAQCAtMzE3
LDcgKzMxNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2lu
ZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0
Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9k
eSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShy
ZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShy
ZXN1bHQpKTsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdElu
Zm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBk
YXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
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
ZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEy
NmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBlMGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIGlmIChhdXRvKiBj
aHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUs
IGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1E
YXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsK
ICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1ZDQ1MmNlMjg4
Y2VkYzAyOTMyZDkzOTZmNjQ2MDA0NmU0NmJkNTM2Li5lNGU5MDhmMmJjOWEwNjgzMGU2NGJhYzVk
MzEwMGM4ODBhYjdjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1
bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5
RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3Jt
RGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIo
KS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGJjNTg1NGY5Yjk2NmZiNjMyOWQxNmZkZTYxOGNjZWIx
ZDhjOTRjYTkuLmExNjA3NDdkZTBjZWFjZWVjYzc3OGQxZmY3YjVmYjJhZTBlYTE4M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBjb25z
dW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90
IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0
MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBA
IC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdo
dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwor
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZm
YTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0
X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBT
aWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
YXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1
b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUy
Y2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBA
IC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVu
ZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29u
c3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApp
bmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFm
MGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAg
LTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9v
bCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEm
KTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1
YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0
NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4
Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9i
amVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdl
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRv
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAg
aWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3Jl
Il9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBk
YXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9z
IH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAg
IGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtl
eUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgg
a2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sg
Zm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFs
dWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1
dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAo
IXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0
aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNr
IGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rp
b24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJf
cyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJl
Y29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpA
QCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtl
eSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtl
eSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0y
MTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJh
bmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktl
eURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0
NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4
UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlk
KCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJl
Y29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAg
LTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRD
b3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3Vu
dCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJ
REJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAg
IGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBp
ZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1
cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgp
IDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2
MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJl
YTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93
ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJl
IHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggYWZlZjQzMjhjNmFjMjBiNmE0NjIxZmRlOGM0ZmRl
ZTYyYjk2N2FhMy4uMDAyNzU3MDgwMmIxNGIwOWQxYWEwNGZjZjQ3YzU4MDljMDljMWEwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5
MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4Yzcy
OTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBm
b3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNo
T24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9
LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCBh
ZTdiMmUyZmNhMGQzN2FhNTM5OTlmYTYyODRhNDU5YTRlNDczMWFjLi5iZWY0ZDJkN2FjN2VlY2Q5
MTdjMWY2NDNhNTI3ZTVkNjc3NjI0ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21w
bGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VO
b25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAg
ICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwog
CiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2
Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIw
YmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRl
VG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVI
YW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
Ynl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBj
YTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZl
NzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2Uq
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAg
IGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9z
ICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGls
ZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNv
bXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4
NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2Ny
aXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
CisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJ
SSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZm
ZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAg
aWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFT
Q0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250
YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVND
SUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAog
ICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hl
ZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZl
ciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlw
dFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlB
U0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0
YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdj
OWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9u
dEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50
LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252
ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFs
dWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAg
ICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjps
b2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNv
dXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VB
ZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAg
IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42
YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2Vk
U2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0
dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2Vs
ZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0
ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJl
cXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJj
ZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODcz
NzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRp
dGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2Rj
Y2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNl
bmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0
OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21p
c2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgog
I2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2Vi
QXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0
IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzcz
ZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJp
YWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUy
NmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4
MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAg
ICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5n
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNo
aXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQog
ewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50
KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBv
dXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8
U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
KmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVu
ZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERh
dGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRX
cml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92
ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1l
KCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hp
dmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2Vz
IG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRl
cyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBA
IC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5T
VUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2Vl
YjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEy
NzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBh
dXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1
c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1sIikgewotICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBb
ZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291
cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewot
ICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAg
IE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkK
ICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIz
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4
YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVO
YW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAg
ICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICsz
MDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAg
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRp
ZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAg
ICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9z
OwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50
KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNo
aXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09M
aXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRp
YyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNl
VVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1
cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAg
ICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFy
Y2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNv
bnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcg
KzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAg
YXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJp
bmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJj
MzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpy
ZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkK
IHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVt
ZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNo
aXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJk
LiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlv
bnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBp
bXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0
eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMw
MTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0
YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5l
KQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0
LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxl
RGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0
b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0
ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBE
aXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAg
cmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVt
cGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVh
a1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3Vt
ZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdz
KCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRh
LCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxh
dGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRo
YXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0
b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0
MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogCiAgICAgaWYgKG1fZGVjb2Rlcikgewog
ICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAogICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYy
ODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1
NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0
byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7
CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEy
MTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0
MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1l
LT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBk
YTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBm
ZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIx
ZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6
ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0
UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVy
KCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVm
bGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JD
cmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUw
ZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFl
NjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVD
cmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwog
ICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVz
b3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVE
YXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1h
aW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1F
VHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9j
dW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZl
RGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2Fk
ZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNo
aXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVy
KCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAg
IGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
KyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1
NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZj
ODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0
IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAt
MjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFy
Y2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJj
aGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZl
PiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJz
ZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVs
ZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAj
ZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hp
dmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93
c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMy
Li5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJr
U3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25p
ZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAzYTA2NGJjNzIzMWEzNjAw
Y2M4M2RjNThhOWEyZTdmZjJlZTk2YjM1Li40ODBmMjJhYmUzNTVkMTA5YzIwODYyZWZhZTlkYmQ1
ZDA4NTdjOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc2
LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0
aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZp
bmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgz
ODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5
YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9
CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRp
YWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1l
LmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwg
cmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBA
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3Qs
IGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVz
dCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGlu
ZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2Ny
aXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQx
OGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRG
cmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBl
cldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcg
Kzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNo
ZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRp
YWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNv
dXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9s
aWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFt
ZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVs
bHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1
YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li45MDZkNjRmNTFmYjJiNzg4MDVl
MGJmMmM3YmQ1MDI5MTBmZTRmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQot
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURh
dGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVm
ZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBA
IC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0
byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkws
IG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0
aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1
cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFw
cENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3Qg
Y291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJf
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2
ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVk
IGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBj
b3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgog
ICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3Vy
Y2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlv
bkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYg
bm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBh
bm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHgg
b3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2Vy
ZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxv
YWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRo
ZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAg
IGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJj
ZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0
aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHko
KSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAg
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlm
Li5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBt
YXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2Fu
Q2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBm
MWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1
OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRl
ci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBk
YXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUu
Ljk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgp
KSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
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
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZl
NGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1
MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2Ug
OiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCA1NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1MzVjNjMyZDlkMmRh
YzkxM2VmLi41ODcxYThlYTZhMzExOThjOTBhNGY0OTQxYmMyM2RlOTg0OTViMTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNl
clN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBp
dCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdo
ZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwg
YW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkw
NzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxp
emVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1
YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3Vt
ZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rp
bmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwg
VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5h
ZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYw
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUg
d2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5
bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29k
aW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQv
Y3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQu
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMu
YWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50
KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7Cisg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2
MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0
ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVy
bDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAg
ICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0
MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEg
ewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNh
ODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1
YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJl
RGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdp
dGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJl
RGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBT
aGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJ
bmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAg
ICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURh
dGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAg
bV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0g
c3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBt
X3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYz
OWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVu
Y29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFi
Mi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBI
V05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNs
YXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250
ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBT
dHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAg
IFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMTksMTcg
KzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+
UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShX
SU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBT
dHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsK
LSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAg
IFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgs
NyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlw
ZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0
cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShj
b25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlD
aGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2Vj
YjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
UGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdp
biwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFs
aXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5n
RGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3Rv
bURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQ
ZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJi
ZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFjMzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFj
MTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47
IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9
IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2
MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFz
cyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1
Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUs
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRl
eHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9S
TShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFm
OTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJs
aWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5n
IGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7
Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAg
ICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNl
bmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2
ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1
Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0
ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9h
cmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZl
VHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUlt
YWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
SW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5
MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3
Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
c3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsK
ICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1
YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVhYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAg
ICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHsw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7
CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
IHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShw
cm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9
CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVT
RShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVy
JiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkp
CiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBl
ZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVh
dGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwot
fQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0
byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBS
ZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNh
dXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8v
IG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYg
KG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2Nv
bnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYg
KCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVu
dC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0
YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0
YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
OjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdt
ZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
Ojpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZm
ZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKQEAgLTIwMiwxMCArMTkyLDEwIEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1f
c2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVu
dC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUo
KTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIz
ICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6
ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUg
Kz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBs
ZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9
IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1f
c2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigp
IH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNT
RVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVu
dChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5
KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0
NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4g
aXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXpl
KCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0zNzIsNyArMzYxLDU3IEBAIGJv
b2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBz
ZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1
ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRp
Z3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5
KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29u
dGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkg
fSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3Vv
dXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBp
bmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNj
ZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShm
aWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1h
cHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVy
biBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29s
IERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9p
bW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSks
IHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0Citz
aXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4g
c3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJE
YXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUo
c2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNl
Z21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBw
b3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYgKzUzOCwyMSBAQCBjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVu
dC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAorewor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2Vn
bWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVu
dCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6
ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFs
bG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAg
ICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1Nzgs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZj
NDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhiNjc4ODMxYzI0NjFjZjFjYjAyYzBkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2
IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQg
YmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0
cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBN
YXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRh
dGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRp
ZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBj
b25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0g
ICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQ
dHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1
c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBp
ZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2lu
ZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2Fs
bCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24g
aWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29u
c3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsK
LQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsg
fQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIo
KTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0g
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50Lgot
ICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAg
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
YXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyNlbmRpZgorfTsK
IAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVm
ZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJh
eT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQot
ICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisK
KyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVw
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVf
dCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAsMTAyIEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsK
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJv
b2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGltZSwg
dGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAKLSAg
ICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
dG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYm
KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRp
Z3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBi
b29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50
b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsK
LQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNv
bnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3Qg
cG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90
IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7
Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5l
ZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50
KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBh
IFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQg
dmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNp
emVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4o
QXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRh
U2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBh
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJv
bSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVt
IGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVN
YXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAg
IFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEo
KQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2OCwyMSArMzE1LDIxIEBAIGlubGluZSBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51
bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUg
PSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0Uo
Rk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
ICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3Qg
bV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2Yw
NDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9u
CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQog
ICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3Jr
ID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5t
aW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVu
dGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgp
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzlj
ZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYs
MTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJh
eVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0
Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERp
Y3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxs
cHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5k
ZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThm
NDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5
ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNv
ZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7
CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2
MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi5hMTJhNzQxYTU3MDI1OWZjMjI4
YTZkOWFiYmMzMjBlZjdmNmM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFu
IGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8v
IHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShG
T1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkg
ewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFS
ZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQpAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFT
U0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2Nv
bnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHtt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENG
RGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThm
MWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBA
IC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0Zvckxl
Z2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikK
K3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFy
ZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0Jp
dG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAg
YWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcg
KzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0
eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBT
dHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7
CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi5mMGUy
Y2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1
LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBX
ZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRh
dGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIp
c2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24g
c2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAg
TlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAg
ICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5T
VUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwpAQCAtOTgsMjQgKzk4LDIyIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwog
fQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAK
LVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QK
K1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0
YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3Nl
Z21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxw
dHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAg
ICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKQEAgLTEyNiw3ICsxMjQsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitS
ZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0
aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2
Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
UGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2Jq
ZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3
Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIw
MGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBA
IHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBp
bml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0
YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAg
dW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDggQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQog
ICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFp
bmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJy
YXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJs
IGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFs
dWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJl
ZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3
M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtl
eWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5k
QXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZp
bmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCks
IG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4
MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVu
Y29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVy
cmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZk
NzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFu
dEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxk
ZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5
dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1
OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQx
NDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJH
bGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThj
MTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2Vl
NzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJl
ZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1
MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4
ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0
aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2Fj
aGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9u
dFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNo
ZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdy
YXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1
NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwg
T3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZv
bnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0
aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3Jp
ZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9u
dEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0
cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQy
Zjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMw
YjNkYmRmOThiZTk1MzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURX
cml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRp
b247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5
IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdl
IChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIy
NCwxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5n
IGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVj
dGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+
IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3
ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSks
IFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpN
b2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUo
V1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3Yzdm
NmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZh
MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEw
ICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwo
KTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAg
IGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91
cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBN
b2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAg
IGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9k
ZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwor
ICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNj
MWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2ln
bmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewog
ICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYg
KGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBA
QCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2
X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJU
X0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNp
emUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBi
b29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkK
IAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAn
d09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09G
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9
IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6
CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NF
UlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wg
Y29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNm
bnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9Q
QVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIs
IGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAg
ICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAx
NjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1
cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBi
ZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBv
dXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50
IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8v
IElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRm
b3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQg
dG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4g
SWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0
ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMx
MTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3
NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2lu
ZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEz
MzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1
MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcg
KzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9i
amVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBy
ZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEy
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlh
bGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGlu
aXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5p
dERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGlu
aXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAg
ICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
OmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNU
UkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0
RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwor
ICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5p
dGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0
OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGlu
Z1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9u
cyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAg
ICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1v
dmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRo
QXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpz
dG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9h
ZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXls
b2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3ND
b250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNv
bnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXls
b2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcg
KzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBp
bml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVz
dC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFM
OjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZh
aXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5m
aXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcp
OiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25z
ZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0
YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNz
aW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBz
dG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklE
IjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVk
U2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwog
ICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRh
KiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2
LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3Rh
bmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMg
PSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7
CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihj
b250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3Qg
Q2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENh
bGxiYWNrQWdncmVnYXRvcj4gewpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0
b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAg
ICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRy
eS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCks
IGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5
SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVu
Z3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5
KSk7CiAgICAgICAgIH0KQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJl
dGFpCiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgp
LnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9
IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJ
RCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAg
ICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwg
YWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDks
MTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9
IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5T
RGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURz
LmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewog
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250
ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5
NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0
ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3Vy
Y2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9k
ZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJH
QigpKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNz
ZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6
ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxU
LCAwKV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0Ai
dHJhY2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9i
akM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUp
CiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9s
b2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVk
KSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFm
ZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4
ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZs
YWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVy
KCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAg
IGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZs
YWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpu
c0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250
aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJm
NzJhNmYyNDdmMC4uZGY2MmIzZDczNjNlZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlCiAgICAgaWYgKCFt
X2J1ZmZlcikKICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAgICAgZWxzZQot
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fYnVm
ZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5T
aGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
KFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQpAQCAtMjM4LDcgKzIzOCw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBp
ZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERh
dGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9u
c2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJl
c3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShy
ZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYz
MDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVj
dCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFz
cyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsK
IH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQz
ZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFm
N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25h
cnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVf
dCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0
PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAg
ICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3Np
dGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBA
QCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0lt
YWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkg
ewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVy
SGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMg
dGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5k
ZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVz
ZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8g
Z2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkg
bG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRh
KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIu
Z2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdy
YXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCku
cmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0
aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAg
IC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIg
YW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1
aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0
YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxs
YmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCks
IGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3
YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUx
MjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcg
QEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0
YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENy
ZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5
M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRi
ZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAg
ewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXgg
NTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVk
ZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVm
PiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICBy
ZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJs
ZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEw
ZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9M
aWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGli
cmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGli
cmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0
MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxh
dGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1Nl
bGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAg
IENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7
CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsK
QEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0
YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAK
ICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2
NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhkNWMzYjRhZDc2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4g
R3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEo
KSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVy
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUo
Y29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBmMTYwNzE1YmRh
Nzc1OTg5MDEzMzZiNjNjOTU2N2MwMzI1MGJkMjU3Li45NDRjNzFlNzA3M2U1NjkxYWNmNTg3MjIw
NDdhOTFiYzczZDA4MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJr
aXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykK
IHsKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAg
ICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZh
dGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZi
MjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZi
MjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1
b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3Jl
YXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCks
IHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVy
ID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0
YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRU
eXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IDkxMTI2NTkyYzhiYTc2YmQ2NjM3MzMyNGQ1YmIyOTZiMzFkZTAzYmUu
LmRmMWNiYjg1ZjIyY2NmNDYzYmQ1NTdiYTE3ZTA5YTVjZTM5MDBhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjU0LDcgKzM2NTQs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1
bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIs
IGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAg
ICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImlu
aXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXls
b2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBh
eWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXph
dGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0
RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3
M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJj
Mjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2gg
eyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFy
dEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwg
Y29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJv
cioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJz
ZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1
c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAg
aWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5w
c3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAg
ICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1
cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNl
ciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1h
cmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFy
c2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92
ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBw
YXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAh
cGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4
NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMzUyYTMzZmNhNDEyMWYwOGEwZGNhYzRmMjQ1YWZmNjJhMjZk
YzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVt
SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlk
KHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1v
dmUocGF5bG9hZCkpKQorICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBh
eWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQogICAgIHsKICAgICB9CiAKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJk
MTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQx
OGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Ojpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9u
dFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9u
LCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3Jl
YXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFh
YTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdF
QkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwor
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5
MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5
NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRv
Y3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudElu
c3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
IH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5
ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJm
NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1
Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1h
dGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3ND
b3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBn
ZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpA
QCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdl
IHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9u
SW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIw
LDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAg
UGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6
OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5U
eXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBl
OjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29y
ZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdz
LgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRz
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFy
aWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZh
cmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAg
ICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEds
eXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3Qg
TWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
aG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25z
dHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRp
Y2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwg
Z2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBt
YXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGds
eXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0
aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2
X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3
IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQg
bWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09m
ZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENv
bnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAg
ICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRo
R2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zm
c2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3
ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRz
KiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0Owog
ICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDI5OTBiZmIw
M2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2Yz
MzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQw
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBG
b250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5
cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
T3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUo
T1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVT
RShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2
NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7
CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNo
MywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8
PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAg
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYK
IAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9u
IDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkw
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7
IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAg
ICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyAr
OTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3Qq
Pih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3Zl
cmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQog
c3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBi
b29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENv
dmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5k
ZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGds
eXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3Zl
cmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDMyMTZiN2Vm
MDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYx
ZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8g
YWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0
aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBz
aXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4m
IHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhf
dD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0g
Zm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2
Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBh
bmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250
TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnRO
YW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAw
OWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi4yMmJlMjMwYTYwNWM2NmEw
ZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAg
LTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVT
aG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4Owog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtNTQsOCAr
NTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsK
IAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZl
Y3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5h
bWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0
b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTll
ZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9u
U3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0
KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJh
Z2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVT
dWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyAr
MTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtG
aWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBv
ZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0
aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxl
XSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBs
b29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZf
dCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9v
a3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29r
dXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVh
dHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50
OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBn
ZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxH
bHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50
XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsK
ICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNb
MV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9w
ZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4
ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0y
MzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9y
ICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVy
ZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVy
ZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsy
NzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAg
IGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0
IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlw
dE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2Ny
aXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2Ny
aXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIs
ICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3Qg
OiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+
KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExh
bmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3Jp
cHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlm
ICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExp
c3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0K
LSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIs
IGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3Jp
cHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRM
aXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxv
b2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlw
dExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBA
IHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+
ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRh
ZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFu
Z1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0
dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0
dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZl
YXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBA
IC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRp
YyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
LCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVh
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJp
Y3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQg
dmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0
IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNv
bnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxP
cGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRN
ZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdz
dWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRp
Y2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEz
M2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgp
OwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwg
Zm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0
NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5
N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMg
QEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNy
ZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggM2Mx
ZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYy
MTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250
TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsK
ICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZv
bnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggMzFhMWU1YzUz
MWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNj
NjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09
IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0
NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0
Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBz
aXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewog
ICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhk
YywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwg
MCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9S
KSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCBy
ZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNp
emUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAg
ICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkp
OwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggY2YyYjUxZjZmMDI4MzdhMTEw
NmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQy
ZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0UmVwbGFjZShi
b29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFj
ZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5TbWFy
dFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRC
dWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0
KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fY3VzdG9t
RGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURhdGEgPSBudWxs
cHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9vbCBtX2NhblNt
YXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21E
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRl
eCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5
NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
QEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0
dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3Jl
IHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNv
cHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAg
ICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlS
ZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0
dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERh
dGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkz
MGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2Yzdk
NDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikK
ICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
ID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CkBA
IC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAg
cmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVj
b2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVl
NDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0Uo
TENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYp
OworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhk
Nzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uN2Y0ZDA5NjIwMDU2OTE2NmQ3NTE5NjM4OTJj
ODg5ZGQ1MjQ3NzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9
IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAg
aWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5
cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NF
UlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAg
ICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdl
YkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBb
TlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0
aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0
cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBb
TlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0
aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBA
IC00ODgsNyArNDg4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJU
RkRGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlw
ZUZsYXRSVEZEXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJblJURkZvcm1h
dC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsK
KyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmRhdGFJ
blJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAogICAgIGlmICghY29udGVudC5kYXRhSW5IVE1M
Rm9ybWF0LmlzRW1wdHkoKSkgewogICAgICAgICBOU0RhdGEgKmh0bWxBc0RhdGEgPSBbKE5TU3Ry
aW5nICopY29udGVudC5kYXRhSW5IVE1MRm9ybWF0IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFz
dGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0
YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAg
ICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAK
LSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1h
Z2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BS
RVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0
YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFz
U2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Yg
c3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50
cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0
aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4g
dGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdl
IHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVy
biByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWlu
ZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYy
YzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAg
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAg
ICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAg
ICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmlu
ZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjNiMjhiYmQxMDI1
MGFhY2MzM2I1ZGFjMGYxZGJiY2Q4YjVlNTFkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMTYsMjMgKzExNiwyMyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIHdlYkFyY2hpdmVUeXBlID0g
YnJpZGdlX2Nhc3QoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
KGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCBDRlNUUigiQXBwbGUgV2ViIEFyY2hpdmUgcGFzdGVi
b2FyZCB0eXBlIiksIG51bGxwdHIpKSk7CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp3ZWJBcmNoaXZlVHlwZS5nZXQoKV07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJblJURkRGb3JtYXQpCi0gICAg
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9y
bWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsK
KyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJblJU
RkRGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
TlNQYXN0ZWJvYXJkVHlwZVJURkRdOwogICAgICAgICBpZiAod2ViQ29udGVudC0+ZGF0YUluUlRG
Rm9ybWF0KQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
ZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOk5TUGFzdGVib2Fy
ZFR5cGVSVEZdOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVu
dC0+ZGF0YUluUlRGRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVSVEZdOwogICAgICAgICBpZiAoIXdlYkNvbnRlbnQt
PmRhdGFJbkhUTUxGb3JtYXQuaXNOdWxsKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJbkhUTUxGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9h
cmRUeXBlSFRNTF07CiAgICAgICAgIGlmICghd2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0
LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250
ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlw
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAg
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtp
XS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAg
ICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRh
LnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
U3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9
CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMy
ZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUx
NTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0g
bWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
CiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJv
YXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBj
b3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVz
KCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewog
ICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0Rh
dGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0
YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRh
dGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFk
ZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1E
YXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAg
ICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0
LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1
c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0
RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50NjRf
dCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVi
b2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0g
W21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEg
PSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAg
ICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5n
ZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5
cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAg
ICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFz
dGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpA
QCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChOU0Rh
dGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0
YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0
ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZjODNk
NmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4
MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRl
cygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNj
MzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVl
MjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVn
aXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGlu
ZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGlj
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
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
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUwYWIz
OWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUgQEAg
dm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtl
ckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0YSkg
ewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAg
ICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3Vv
dXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEs
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5ZDVl
MzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9p
ZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRj
aFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwog
ICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewog
ICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1E
YXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGll
bnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlk
RmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjEx
ZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBA
IC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2Vz
IHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygq
ZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVk
QnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxk
VXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdl
OjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBk
ZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3
OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRv
Y0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4
NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1
bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7
CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIz
YTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNk
NGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0
byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBw
b2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZj
OC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXpl
KCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uu
c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZk
OGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0x
ODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAo
YXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5h
cHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJl
YzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29y
ZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlv
biwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9u
c2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAg
ICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9k
eSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qg
c3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRp
b25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZN
b3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNp
emUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgp
KTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUy
YzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlm
YzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBA
IFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAog
ICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
ICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1
ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7Cisg
ICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJv
ZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1
ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJl
dHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAt
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
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5
Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0
Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAg
LTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZvaWQgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRl
KHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICBzdGF0aWNfY2Fz
dDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8pLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYo
KSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKCkKLX0KLSAgICAKLXN0YXRp
YyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxv
Y2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIENGQWxsb2NhdG9yQ29u
dGV4dCBjb250ZXh0ID0geyAwLAotICAgICAgICByZXNvdXJjZSwKLSAgICAgICAgTlVMTCwgLy8g
cmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJlbGVhc2UKLSAgICAgICAgTlVMTCwgLy8gY29weURl
c2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8vIGFsbG9jYXRlCi0gICAgICAgIE5VTEwsIC8vIHJl
YWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlLAotICAgICAgICBO
VUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAgfTsKLQotICAgIHJldHVybiBhZG9wdENGKENGQWxs
b2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsICZjb250ZXh0KSk7Ci19Ci0jZW5kaWYK
LQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1
ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVm
ZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYgVVNFKENGKQotICAgIGF1dG8gZGVhbGxvY2F0b3Ig
PSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5n
ZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwot
I2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdf
Ynl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7
Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7
Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5n
ZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkg
eyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAorICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1d
KCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CisgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hh
cmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7
CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAtMTM4LDkgKzEwNCw3IEBAIFNoYXJlYWJsZVJlc291
cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSwg
dW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxlUmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgp
Ci17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6flNoYXJlYWJsZVJlc291cmNlKCkgPSBkZWZhdWx0
OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUp
CiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUo
KSBjb25zdAogewogICAgIHJldHVybiBtX3NpemU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFj
M2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRl
NDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMs
MTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLWNsYXNzIFNoYXJlYWJsZVJlc291cmNlIDog
cHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxlUmVzb3VyY2U+IHsKK2NsYXNzIFNoYXJlYWJsZVJl
c291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7
CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5kbGUgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYp
OwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCwxMiArODAsMTIg
QEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hh
cmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsK
IAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCi0gICAgdW5zaWduZWQg
bV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9zaXplOyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBt
X29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3NpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0YzY3N2VjZjg2YWVjYmQxOWJiNjRkN2IuLjY3Yjdl
YjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29k
ZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwg
MSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAg
LTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVT
aGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNoYXJl
ZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAg
YnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6
ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVU
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
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFh
MWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5
OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRl
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
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNk
YzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAx
MzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hs
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
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBj
NjJjNzIwZGRlODJiNzkxNWI3YjNiNTgyMDIzZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZh
ZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBA
QCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNo
YXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUu
ZGF0YVNpemUpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlD
b250ZW50c09mUGFzdGVib2FyZChjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXND
aGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291bnQpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
ZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4
MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBi
b29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQg
KnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4
OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVz
IG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6
W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0
NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMo
ZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7
CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hp
dmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEu
Z2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBp
c0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBA
QCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0
aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAK
ICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRl
IGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVx
dWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcm
IG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0g
W05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNj
ZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAg
ICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRG
b3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1Yzdm
YzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMy
YWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxl
bWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91
YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTNiYjZkNWRk
MTBjYjYzNTNhYWVmOTM1OGUwM2IwNDAwMzJmOTY3Ny4uODg4MjdlYjI5MTJhNTM0ZTkyNWJiNWZh
OGY5NjIzYWVjM2ExMzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTExNzgsNyArMTE3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2Vu
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRT
ZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAg
ICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0
aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZj
NDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFi
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMo
KSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0Rh
dGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEt
PnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21w
bGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAg
ICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4
YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
QEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUw
OGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3
ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9w
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFn
ZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0
ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBhOGU5MGU0MjlhNmVjZTEzNjg3YjlmOTFiYzczODJjYTdjYjBmZjNk
Li42NWU1ZDgyYTM1N2JjYmFhZjk1MDkwMzg1ZDJhZWRhMmVkZjM0MjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZp
ZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAq
YWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5
cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNl
dDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVi
b2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkp
Lm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1
cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk0LDcgKzY1OTQsNyBAQCBzdGF0aWMgQk9PTCBhbGxQ
YXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQs
IGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRl
bnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU2NSw3ICs3NTY1LDcgQEAg
LSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFz
c2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFy
c2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVk
IEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQg
aW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7
IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXBy
ZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5h
bWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVw
cmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJl
RGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxm
LndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdk
M2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJm
ZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaW1hZ2VIYW5kbGUKICAgICBpZiAoIXNoYXJl
ZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5
QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXpl
KSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1
ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAgICAgcGFnZUNsaWVudCgpLnNhdmVJbWFnZVRv
TGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVk
ODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsK
KyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFu
ZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjc1LDE1ICsyNzUs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICBhdXRvIHNoYXJlZE1lbW9yeUltYWdl
ID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUltYWdlKQogICAgICAg
ICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVh
dGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihz
aGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRs
ZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0K
ICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8g
c2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhcmNoaXZl
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2
ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAgICBhcmNoaXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5
QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpOwogICAg
IH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5h
bWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVT
dWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSksIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJs
ZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVyKSwgb3JpZ2luSWRlbnRpZmllcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3
M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVj
OGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFu
Z2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Jikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
S2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChX
ZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4
NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9p
ZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVn
YXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVs
ZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9j
b250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVh
dGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBA
IC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRp
bmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBb
bV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdl
OndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAg
ICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBw
YXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRE
YXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVd
KSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAg
ICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5
MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRv
UGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1f
Y2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0
eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwg
Y28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwog
CiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6
OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNp
emUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0
Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYs
IGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29s
IHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZp
bmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0
NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5ZjdkZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdl
JiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWdu
ZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkg
aW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCku
Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkp
LT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRh
OwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsK
LSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVu
c2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwg
cmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250
aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1
b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1
ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQ
SShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYo
dW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4
NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYg
bW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
KTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0
MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEzOWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYg
KCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJl
c291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4
MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4
MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYw
MjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1
LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5n
ZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMs
IHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQz
N2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2
NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2Vi
Q29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29y
ZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkz
MmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Uo
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXpl
KCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYy
YjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUuLjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmVi
YWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIs
MTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhl
IG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYg
KFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXRE
YXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1
ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJy
aWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2Fn
aW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJgogICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXIt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKQEAgLTMyMiw3ICsz
MjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
ciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7Cisg
ICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUu
ZGF0YVNpemUpOwogfQogCiBVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBh
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
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
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFjYTljMjNkNjc3ZjAzYTI5YzYwZjViMmE4
YmFjNjgwZDZiNWM4NDMuLjJiNzRmNzUxNTZhYmY2YzAxMTA4MDAxMDFlYzdhNWY3MDhkMGJlMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03
NzM3LDcgKzc3MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Ny
b2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNo
YXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5h
cHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnkt
PmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hs
aWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFw
cEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVk
TWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRl
eCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAg
ICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3
ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYg
KGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVk
aXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4u
YzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFWS0lU
KQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9PSBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNlbHNl
CiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBw
b3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9vbCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkoKSBj
b25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJVF9J
TlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2
MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihC
T09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJh
MzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQg
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJp
bmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5p
ZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEz
NDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEy
YjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5
IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5OTcwNmRm
MGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2
YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCAr
NTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAj
ZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5n
PiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQz
MDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5
cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsCiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1Jl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJl
YWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBh
NGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2MzYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSkt
PmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+Y3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQg
PFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMy
ZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0y
MzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAq
KWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZl
XSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRh
ID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVE
YXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZl
RGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4Mzhl
NDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1NjcwMTE1MTM4
ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkp
IHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGlt
YWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0
YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBbaXRlbXMg
YWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZm
ZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNl
bGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRm
YjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0x
NjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAq
KWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2Rlcgogewog
ICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAK
LSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwog
ICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4
dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0g
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5t
aW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5n
KCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAg
cmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQot
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXld
OworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJj
ZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291
cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5Oldl
YlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5j
b2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyAr
MjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291
cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyArMzY4LDcg
QEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dz
TGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBu
dWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRh
ID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6
IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApp
bmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJh
NGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJl
YW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0
LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
Q09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1v
cnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4u
MDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0
cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0
cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5r
bm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03
NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAg
ICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVt
b3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAw
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVm
OGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlk
YzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNw
cApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0
cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0
YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkp
OworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0
YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkp
OwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZm
ZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAy
MTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhh
YjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNkZGU0MjQ4
ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJU
cmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4u
MDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxU
IFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQog
ICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygp
KS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNl
bnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIv
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
eCA2M2RkZDgwN2RjMWJkMzk3NmU2ODgzNmY5M2M2NDM5MGI1MmNlZTRjLi5mOTI1ZDJmZmJkYjk3
MjhiNjY0OTQwYjcxODViNjkyODdjMTI2MDU0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjUgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVl
IGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTI2ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVth
MTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0aW9uIGludGVyZmFjZSB3aGVuIGJ1aWxk
aW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEy
YzdjYTQ2OC4uMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRhNjc2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTQzLDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05V
TEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9O
T1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5n
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5Rmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZm
ZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHkt
PnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7CiAgICAg
RVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4MywxMyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOwor
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VR
KCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1OSw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5
KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VS
VF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25l
LT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBB
U1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUsMzAgKzE3Niwz
MyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBn
ZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywg
J2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAg
ICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKKyAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1
aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CiAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
czMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBh
dXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAg
ICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0
YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIp
OwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlciho
LmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlq
a2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgp
LCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAi
YWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNp
emUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCks
ICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAg
ICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIxMCwxNSAr
MjE0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgICAgICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJuIGJ1ZmZl
cjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2Mn
LCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdj
JywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkp
OwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywg
J2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAn
YicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9F
UShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5n
ZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAn
YycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3MjkwMzQ1YjQy
ZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNjIsNyAr
NjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445181</attachid>
            <date>2021-11-26 00:56:04 -0800</date>
            <delta_ts>2021-11-30 19:23:27 -0800</delta_ts>
            <desc>ContiguousSharedBuffer for review</desc>
            <filename>bug-233030-20211126195601.patch</filename>
            <type>text/plain</type>
            <size>406665</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2YjlmZjNlYmEyYjYw
MmE3MzVjYzQ5OGY1NjBjNzk4NjgxOTBhZC4uOTA1MGJmNmM1MTQ3NjEwOWI1ZmVmNzlkZWZmMDQz
NDkzZjQyMDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTExLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0
aW9uIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjU3MjJj
NTVlNmI1NzRlMDdkNzMxMWM4Y2Y0MDJkN2U3ZDI5NWFlMy4uNDkxMGEyOTZlY2M5NmRhNTEwNDY1
ZWMxNTFmYWE3YTAyNDQwOTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpk
ZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVz
b3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9u
dD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNo
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0
YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
QVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06
CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
biBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXRE
ZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAo
YWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRF
ZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIx
LTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZv
aWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEg
U2hhcmVkQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDUwMWFiMzgw
MTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3ZTE4NDg5YjA0
YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQg
ZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhD
b2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBhYmxlIHRvIGNo
ZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2YmI2
MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1
b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGlt
bXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAg
KE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
RGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgor
CiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIw
OWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNj
ODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAg
ICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1f
ZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPiht
X2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXgg
NDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0
YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFn
ZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBl
ID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVw
cmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpj
cmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYz
OWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5
MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2Uv
cG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8g
Y2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBo
aW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhb
W05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAg
ICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVz
aW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhi
ZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApA
QCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRl
UmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJl
c3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7
Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAg
ICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRy
X3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2QuLjZiOTEzZTQ3
MDNmMDEzYzEzY2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lkIERPTUNhY2hl
OjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1
cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEo
KSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25z
ZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRS
ZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91
cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5
KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJl
c3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhj
ZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxlIHsKQEAg
LTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAg
IGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3Zl
KGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1v
dmUocmVzdWx0KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVl
c3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UK
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VE
YXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2Up
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAg
ICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5
NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTEx
YmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFs
OwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwg
UmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJl
c3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYp
OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywg
WWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5
MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3
NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkg
aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29w
eSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3Bv
bnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
KyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERP
TUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3
IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9k
eSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAt
PiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNv
cHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFk
MjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMy
ZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9F
eGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJM
JiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2
YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VC
b2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJD
T1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBh
MzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29u
c3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
dWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpT
T04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8g
a2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVy
IDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwor
ICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2Jq
ZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5n
IGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2
YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0g
YS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRh
dGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01h
cDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3Rk
OjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFL
ZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7
CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5
VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJl
ZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJmZGM0YzAw
MjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1MDhlZjk1
NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2Io
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9p
ZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIg
PSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIu
cmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
PnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBs
aWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0
YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEo
KSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkp
OwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVy
biBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
cmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5
Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5Nywx
NCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAg
ICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9k
eSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9k
eSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJj
aFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChp
c0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZm
ZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCku
ZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJh
eUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3Mo
KSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0Jv
ZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIzNDdmNGIw
NGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgyODIzYjQw
MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgp
IGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5E
YXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lk
IHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShk
YXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNi
Li4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc1
LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29u
dGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBm
b3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQor
ICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250
ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTM2Miw3ICsz
NjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJv
bVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZmZXItPnNpemUo
KSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0NTJj
ZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uZTRlOTA4ZjJiYzlhMDY4MzBlNjRi
YWM1ZDMxMDBjODgwYWI3YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJh
Y2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2so
JmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0
Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGlu
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFz
Rm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkp
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1
bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBiYzU4NTRmOWI5NjZmYjYzMjlkMTZmZGU2MThj
Y2ViMWQ4Yzk0Y2E5Li5hMTYwNzQ3ZGUwY2VhY2VlY2M3NzhkMWZmN2I1ZmIyYWUwZWExODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9p
ZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEg
Y29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50
NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5
MmE4NDIxMzUyZGRkMDQxLi42MTM3YzJjZjZmZjQ3YTM2ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQu
aApAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdo
bGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAx
KTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8
PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFl
YWJmZmEzMmQwNGE0NTc2YzA2Li44M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2
M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgY29uc3RleHByIHVp
bnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZp
bGUgU2lnbmF0dXIKIAogc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29u
dGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCAyYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1
NWFlMmNjY2M0ODc3Li5hMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2MxYTFhMmU4NGRkY2E3YzcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
a2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsK
IApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJ
REJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5h
cHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRhdGEs
IGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmgKaW5kZXggNjVjNGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNC4uYWFmZGIz
NzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
CkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlE
YXRhOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsK
IGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlE
YXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1
NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUy
Mjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3
ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJ
REJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9u
IHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNo
YW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAg
YXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwog
ICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9y
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBz
dG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVh
dGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUg
aW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFz
ZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsK
ICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5k
ZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGlu
ZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNo
ZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMs
MTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtl
eVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4
S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRl
eCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAg
ICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAg
aWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0
aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVj
ayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkg
IT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5z
YWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUg
ZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUg
YSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9z
IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0
IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3Mg
fTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0
byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAg
ICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpA
QCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBr
ZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJ
REJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3
ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNW
YWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5
cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRl
eCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07
CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0
Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsK
KyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAg
ICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1
dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGlt
dW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBj
b3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2Ri
NjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZl
OWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjks
NyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVu
dC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0sp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQg
KGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBA
IGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZO
ZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3Rh
dGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElU
RV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRv
IHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGFmZWY0MzI4YzZhYzIwYjZhNDYyMWZkZThj
NGZkZWU2MmI5NjdhYTMuLjAwMjc1NzA4MDJiMTRiMDlkMWFhMDRmY2Y0N2M1ODA5YzA5YzFhMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lz
UmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5n
TWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlm
aWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50
aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNs
ZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYw
ZjI0OTM4YTliMjA4ZWYzNmY2ODAzYzQuLmU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2ZTZmZDJk
OGM3Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogCiAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7CiAgICAgICAgIHN3
aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQp
IHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAg
ICAgfSwgWyZdKFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5k
ZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVmNGQyZDdhYzdl
ZWNkOTE3YzFmNjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMjA0
LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRh
Q29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxl
YXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7
CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1h
a2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXggM2U4MmFj
MjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2Zjg3ZDdm
ZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxM
b2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3
cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0
byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBm
aWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291
cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5V
U0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsK
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgx
OGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZi
OWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9t
aXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAg
ICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xv
YmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRl
ZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNv
bXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxs
cHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2
OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICht
X3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5
QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3Vz
QnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAg
ICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09u
bHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1f
Y29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAg
ICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFu
ZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25s
eUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07
CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9j
YWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRC
dWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxw
dHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRT
Y3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNP
bmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBj
YWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1NGYxOWJhNGI4
MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjps
b2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQm
IGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxl
bWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0g
Y29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1f
Z2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsK
ICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAg
ICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3Rv
bVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJj
ZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlh
dGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
X2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRl
TGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5i
YXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAg
ICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAg
ICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcy
OC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7
CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250
RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsK
IHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRh
Z2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVy
ZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9u
dFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVz
dHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2Zv
bnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVz
b3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RG
QnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9U
RkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291
cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVk
aWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5mYTE0NjdkYjhl
ZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6
cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwg
YWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLmY1
ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3Mg
RGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNm
ZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBj
bGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKSBj
b25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlw
ZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5k
aWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhj
b25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVm
YzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5OThmN2U3NjIz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVu
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3Qg
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBT
dHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1Yjdh
YTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1
Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Vk
aXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9u
dEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAog
ICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRy
aWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0
cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmpl
Y3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxw
dHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVk
QXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRv
cjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRv
cjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVu
dChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5
cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0
YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxl
bWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5n
ZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2
ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5h
cHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBw
ZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBv
dXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJv
YXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdU
Rk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNl
bGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5m
cmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRp
b24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
cmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBN
YWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5j
bHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90
LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmco
Y29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2Vy
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAs
IGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAs
IGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3
NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBA
IC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9y
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChh
dXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAg
ICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlm
ICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAg
ICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAg
ICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0
aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0
YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkp
IHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAg
ICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRG
aWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0
aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1F
VHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjMsNyAr
MjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JF
bGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVs
ZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVl
MzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmlj
aENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBm
cgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBm
aWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC0zMDks
NyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAg
ICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlk
ZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7Cisg
ICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1
ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJp
Y2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYg
ZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRp
YSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3Zl
KG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0
YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
V1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFs
dWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFn
bWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRl
bnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAg
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAK
LSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2Jq
ZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3Zl
KG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNo
aXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlw
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5k
QXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBt
YWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hp
dmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMg
U3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYg
ZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwg
TVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29u
c3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNv
dXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBN
YXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9
IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAog
ICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJh
bWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2Fu
aXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJh
bWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1M
KTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcu
Z2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYz
MCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwog
ICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwg
c3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAg
IGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDliNzc3NTNkLi41
ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmlu
ZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2
ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1l
bnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdl
RWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdr
d2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVu
Y3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIg
dG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA3
NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNmM2MxOTllNTRj
YTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQRGlyZWN0b3J5
RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0
TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJl
c3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNz
RmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERp
cmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0
aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURv
Y3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJl
Y3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVt
cGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAsICJMb2FkZWQg
RlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5zaXplKCkpOwog
ICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5n
cyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVu
dFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50
RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkp
LmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogdGVtcGxhdGVE
b2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0
aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUg
ZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFyc2UgdGhlIHRl
bXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLCBzdG9y
ZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRp
cmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDcz
NTg2NDMwZmUwZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1ZjRmMTg0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmIChtX2RlY29kZXIp
IHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICBtX2Rh
dGFCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
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
YWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0ZjUxZmIyYjc4
ODA1ZTBiZjJjN2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgK
ICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNw
ZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4g
aXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFt
ZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlz
LCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4
ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NjEsNyAr
NTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51
cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
cmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51
cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0
YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4w
MzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFu
aWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21h
bmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAg
IGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0
VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8g
QXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2ln
bmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlm
ZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVT
VD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUw
NmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291
cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3Qg
bmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJl
c291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgICAgIHJldHVybiByZXNvdXJj
ZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGlj
YXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8v
IElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdp
dGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEg
NHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJl
IHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRv
d25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBv
ZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAg
ICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVz
b3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwot
ICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkg
b2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBj
b3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgot
ICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAgICAgICAg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYz
YjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29s
IGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5k
ZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uNjcxMDk1N2MzYWI3
NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2
NTk1Li45Njk2ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFT
dGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5n
ZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1h
bmQoKSkgewpAQCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAg
ICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwog
CiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0
ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRvIGRh
dGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
bkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVu
dC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApp
bmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5mNWVjNGRkNjdm
N2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQ
cm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJl
IGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAg
ICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwg
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNl
IFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25z
ZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwx
MyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUg
Q0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJz
aW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5
cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewog
ICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJl
c3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52
YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJv
bVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VW
ZXJzaW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQogUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwm
LCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
OwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisK
ICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9w
ZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZu
ZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEK
ICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlv
bmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlv
bmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9
IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlv
bmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJl
c291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
Tm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25h
cnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAo
YXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAg
ICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7
CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3Rl
ZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYg
KHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAg
IGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcg
KzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAg
IH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0g
cmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSBy
ZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkz
NT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rp
b24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAg
ICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNl
dCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8g
YW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBp
dHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVy
PVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUl
XCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmlu
ZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjczMzZiMzdkZTNi
ZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5ICsxOTMsMTAg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkg
ewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERh
dGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAg
ICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFy
dC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsyMDUsMTcgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3Qg
TUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0
YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVu
Qml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChj
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8g
Y29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291
bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRo
ZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5N
aHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLjY2MWE5OWFl
NTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lkIENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJm
YzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYwMWQ4ZTAxNjcy
NzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBl
Q2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8g
RG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBp
dCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTksMTEgKzk5
LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0
aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05v
dGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUg
ZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJv
dW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtl
bHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVy
YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhj
MmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2YwNDMzNmIzNmM2
MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
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
ZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDliZjFjNjA5OWY1
NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVk
c0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3Jh
cHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0
b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wg
aXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21G
b250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMx
MTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFk
Yzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQog
CiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJ
bWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGRE
ZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdl
RGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRh
dGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAg
IGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdl
dCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBj
YW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2Ny
aXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2Zl
Yjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2IxMjgzNDJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTEyNSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRl
SW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkz
OWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAwOTFlOThmOTky
NGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAg
ICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAK
ICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAgIHdoaWxlIChk
YXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3LDE0IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlm
IChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Cisg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgp
LCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIuLmExMDVlMmI0
YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5j
Y2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVz
b3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2Vu
dCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICNl
bmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAg
ICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVl
ZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRl
cjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhl
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5k
ZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewogICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9j
dW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1l
bnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCku
dXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVu
dC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDggKzk4LDEzIEBA
IHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1
MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lkIENhY2hlZFRl
eHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5jMTcwZTYw
NDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MywxMCArNjMs
MTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIAogdm9p
ZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChk
YXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9T
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
c291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRlNzI2MmM3MGVh
OWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZjZGZjY2NiYTQz
MWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05Nyw3ICs5
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1YzYzMmQ5
ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6
OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdo
ZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0
byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxs
ZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4K
LSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAx
MWE5MDczNjc1NGRlNTE4ZjEuLmQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2Vy
aWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVz
OjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBk
b2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwor
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBl
KCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRl
eHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVS
THMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcg
KzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBu
b25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5n
KHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRF
bmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0
ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NU
ZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAg
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VV
UkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJp
YWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxl
bWVudCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBw
ZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0p
OworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQo
dXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGZmM2UyZTFm
Y2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBj
ODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVS
TCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQw
ZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVE
YXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNk
ZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkz
ZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2hhcmVEYXRhUmVhZGVyOjpT
aGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKLSAgICAKKwogfQogCiBT
aGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpAQCAtNzEsMTUgKzcxLDE1IEBAIHZv
aWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1ts
b2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgIAorCiAgICAgUmF3RmlsZSBmaWxl
OwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZp
bGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwog
ICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFy
ID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAg
ICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggNzlhMjM1MzU1ZjFlOGVmODYxNTM1
MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdjYjVk
NGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4
ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYgKzYxLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7
CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAg
ICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVu
dFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5
LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBP
UlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZP
Uk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAg
ICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlw
ZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYK
ICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAt
MzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2Fy
ZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25z
dCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5
cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3Vy
aXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42
ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBv
cmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNl
cmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAg
ICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0
cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRl
eCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYw
NTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBA
IHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmln
aW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1
c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJz
aXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0
NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFjM2VmYWRlODcwYTQwMTFmOGM0YmJh
YzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0Owog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEs
NyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVt
SW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1
Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewog
cHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVG
b3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0Owor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0
cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUu
LmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZjMjBkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAg
c3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0
ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzEsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9y
U2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1
ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTkzLDcgKzk0
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVi
b2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1
ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3
YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5m
byB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4u
NWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRh
KQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkp
IH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1vdmUoZGF0YSkp
OwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cit9CisKICNp
ZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2ICs3OCwxMCBA
QCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1
ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZt
YXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlV
c2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1h
cHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdT
dWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYg
KG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3Rvcikp
KTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMwICs5MiwxNiBA
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
ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJpbmcgU2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAor
eworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1
b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBSZWZQdHI8QXJy
YXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewog
ICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAgKzE5MiwxMCBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwor
ICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0
eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7
CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNl
Z21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5z
aXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIx
MywyMyArMjAzLDI4IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rvcikp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0
YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9z
aXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3Np
emUgPSAwOwpAQCAtMjQzLDE3ICsyMzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25l
LT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25l
LT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hl
Y2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBh
cHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKQEAgLTM1NSw4
ICszNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJlZEJ1ZmZlcjo6
aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0
dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMu
c2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcgKzM2MSw1NyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91
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
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MzAsNyBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAor
Ym9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+
KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDQxLDcgQEAgdm9pZCBTaGFyZWRCdWZm
ZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgogCi1XVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25z
dAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDk1LDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25z
dAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTQsNyBA
QCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5T
ZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZN
b3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRo
aW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgp
IC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzgsMjEgQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3Nl
Z21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
K2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30K
KworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3Qg
UmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAg
W3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3Nl
Z21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9
IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAv
LyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJz
LgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01MzQsNyAr
NTc4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9jYXN0PGNo
YXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1Nzdi
MmU2YzQ1NDkxODM5MzY4YWQuLjU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYxY2YxY2IwMmMw
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02MiwxNDYgKzYy
LDE0NiBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hv
dWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9i
amVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcg
RGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7
IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAgIGVudW0gY2xh
c3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZ
ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAg
ICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0j
ZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRh
KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYp
OwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdM
SUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBH
UmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShH
U1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgp
IGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21l
bnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMg
dXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhl
IGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0
aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgp
IGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkg
YnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0
IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFu
ZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJy
YXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1
ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0
aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNs
ZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owor
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0K
IAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFi
bGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8v
IFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVu
dC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxE
YXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6
ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQor
ICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRy
PEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9u
PGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4g
c2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0g
ICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVu
dChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYK
LSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAg
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCisjZW5kaWYK
K307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNoYXJl
ZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsg
fQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShD
RikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAj
aWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgor
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNv
cHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhl
IFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlz
IFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRo
b3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAot
ICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0
OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8g
a2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBz
aXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMjEwLDEwMiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwg
MT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAg
ICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
c09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRp
bWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owog
Ci0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBj
b25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhf
dD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXIm
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VD
b250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Cisg
ICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmlu
ZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxs
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
ICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQg
b24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdoZW4gY2FsbGVk
IGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxldGU7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VG
aWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikK
KyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3RE
YXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzMxNSwyMSBAQCBpbmxp
bmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFy
ZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYg
VVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsK
ICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6
ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUu
LjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAg
IH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdl
dCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
SWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhh
c2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2Jm
MmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAt
MTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBh
ZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jv
b3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5o
CmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNi
Y2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
fktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQg
ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZp
bmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXgg
NmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0MWE1NzAyNTlm
YzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZv
ciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24s
CiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFV
U0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZE
YXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkg
Y29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCgh
bV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVu
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
ZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDEx
ICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZh
Y2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRl
Z2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwog
ICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0
YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEp
KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBj
b25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwog
fQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNv
bnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICgh
bV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShu
dWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEp
OwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5T
RGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQogCi1SZXRhaW5Q
dHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5p
dFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li42
NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290
IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAg
ICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3
N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJl
ODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgs
OCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xv
Y2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRh
LmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250
aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwog
ICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNyw4
IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRl
eCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5k
YXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGln
dW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNv
bnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFu
IGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2
NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElE
IHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXkt
PnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJh
NDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4
ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6
OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmlj
OjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZl
cigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQw
Li41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIu
LmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEy
ICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJh
eVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3Zh
cmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVm
UHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRC
dWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9h
c19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5n
ZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShk
YXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5n
ZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShk
YXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcw
Y2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1
YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNv
ZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5
dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXgg
OGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODlj
YTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0
ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigp
OwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRo
X2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9j
YXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAx
N2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0ZTYwZjczZmMx
MDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVy
c3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9u
dENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250
Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4g
b3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9v
bCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRl
Q3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkw
MTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0
OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAg
ICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2lu
LCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50
ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUs
IE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51
bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZh
YTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3
YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNl
IElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1
YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNo
YW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBA
IC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNv
bGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291
cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41
YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6
Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRh
dGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2Rl
bChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2Rl
bDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJk
N2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2Uw
MDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0z
OCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1v
ZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsK
KyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5n
LCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJM
IG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsK
ICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+
IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwp
KTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9
CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhmZTZkNzk0MWQy
ZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2Zm
MlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkK
IHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAg
IGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFT
U0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0
aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFs
dWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0Njsg
LyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBp
c1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZz
ZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2
YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYg
d29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAg
QVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBi
b29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+
JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1i
b29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVT
RURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAogICAgIFZlY3Rv
cjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRvU2ZudCgqYnVm
ZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAgICBlbHNlCiAg
ICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5
NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRl
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlzV09GRihTaGFy
ZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKIAogLy8g
UmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBvciBjb3VsZCBu
b3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29udmVyc2lvbiBy
YW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdyaXRlcyB0aGUg
c2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOwog
CiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUgY3VycmVudCBw
bGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRzLCBjb252ZXJ0
IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdhcyBjb252ZXJ0
ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIG51
bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkw
ZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAy
OGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFj
dFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpTT04gb2YgdGhl
IGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYg
KGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlm
MmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNi
ZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMy
NCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9v
dCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAg
ICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcw
OSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGlu
aXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9
IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlm
IChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkp
Ci0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBM
QVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0g
SW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAg
IGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9i
amVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldy
aXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyAr
NzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vz
c2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkg
ewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBh
dXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
cmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkg
d2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyAr
ODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBh
eWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgq
cGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50
S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRL
ZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9j
ZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3Mo
KSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6
cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkw
MSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2lu
ZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTky
Mjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVz
cG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBL
ZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVk
U2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGlu
Z0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0
aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Np
b25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhw
aXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5T
RGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAt
MTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9p
bnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHko
KSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5Q
dHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7
CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNh
dGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3Ry
dWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMo
VmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAg
ICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0
YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJ
RCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgp
Lmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShl
bnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3Rv
cjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlm
aWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUo
a2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJy
b3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3Ip
OwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJ
RCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERh
dGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0x
MjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJ
RHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtl
eUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5
IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlm
aWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJy
b3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwg
Y29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSld
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4
IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0
ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFW
Rk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJl
c291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAs
IG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVh
dGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFtt
X2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1
ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVG
QVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6
QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRT
aXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNl
aXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5
NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEw
MjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFn
cyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1
ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBl
bmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURh
dGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlz
Y29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2
MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJkYTQ5YTYwZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZQogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogICAgIGVs
c2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAg
ICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgp
LCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCks
ICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFl
MmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0Owog
Y2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZh
Y2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0
ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEz
NWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0
aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBz
aXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7
CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAo
cG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUz
LDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhp
bnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRp
ZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24g
TWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFw
cGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBX
ZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRh
IHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVh
bGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFs
bERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNv
ZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBh
bGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0
byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdl
dCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNr
IHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIK
ICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2lu
dGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwg
MCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07
Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVy
Q2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0
cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAz
MWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3
MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMx
OSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAK
IHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1l
bnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFk
MjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250Lmdl
dCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4u
NjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQog
ICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRl
cnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmlu
ZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1
NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlw
ZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAg
ICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFp
blB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwg
dGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQx
OTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnko
RlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZU
X0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlw
ZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZl
ZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9u
dFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBG
VF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsK
ICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0
KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNl
KCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3Ig
fHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwog
fQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1
NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0YWQ3NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAgVmVjdG9yPHVpbnQ4
X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBk
YXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1
ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxh
YmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjE2MDcx
NWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNlNTY5MWFjZjU4
NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wg
d2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWlj
cm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7
CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7Cisg
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBw
cml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTli
ODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNk
MDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lk
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0
YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCA5MTEyNjU5MmM4YmE3NmJkNjYzNzMzMjRkNWJiMjk2YjMxZGUw
M2JlLi5kZjFjYmI4NWYyMmNjZjQ2M2JkNTU3YmExN2UwOWE1Y2UzOTAwYWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY1NCw3ICsz
NjU0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9u
RGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNj
aGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAl
enUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAg
ICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1Q
KCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEu
cGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAg
IEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwg
aW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1
YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJk
NGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQ
c3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3Vw
U3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5h
bWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBH
RXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3Vw
UGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBp
ZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAg
ICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0
YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7
CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdN
YXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQ
YXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50
LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1
bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdU
Rk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQg
fHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3
MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjM1MmEzM2ZjYTQxMjFmMDhhMGRjYWM0ZjI0NWFmZjYy
YTI2ZGMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5
c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0
ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChX
VEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRl
ZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4
M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJu
IEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRh
dGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwg
JmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1
Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYw
MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9Owog
Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdi
MDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0
MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1l
bnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGlu
aXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQ
YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkw
MzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUx
YzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
c3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBl
OjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFs
aWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2
X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRd
KSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3Zl
cmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBN
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBA
IHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNv
cmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJp
YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4m
IHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50
UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25z
dHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5
cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAg
ICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNl
dDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3Ry
dWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2
ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRp
Y2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0
cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVp
bnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsy
MDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFu
dHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0y
MjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlh
bnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJp
YW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkw
YmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZk
ZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3
ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9w
ZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5B
QkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxp
ZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1
NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlw
aElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gy
LCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gz
KSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkp
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQog
ewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlz
VmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3Np
dGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3
ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAg
ICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRp
b24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4
LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3Qg
Q292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFn
ZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlw
aCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8g
Q292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2
YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUx
MDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAK
IC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0
ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0
aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6
ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZv
bnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBm
b250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5k
ZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVj
NjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
CkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRp
YW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZp
eDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0
LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsK
IH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wg
cmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43
OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1
dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9y
bWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9m
ZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENv
dmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2lu
Z2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBt
YXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwg
c28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJU
YWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWlu
dDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
bG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChi
dWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0
IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJv
b2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBz
LCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtj
b3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1
cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4
LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChp
bmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpA
QCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1
cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAg
ICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZl
YXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9w
ZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcs
NyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3Bl
blR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAK
LSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0
cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBz
Y3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRM
aXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRh
YmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
U2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAg
ICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsK
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3Jp
cHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQp
OyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVm
ZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBM
aXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3Qg
U2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2Ny
aXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVy
LCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBz
Y3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlw
dHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBl
OjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVs
dExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0g
ZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9v
bCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZl
cnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxl
KQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBz
dGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9
IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAg
ICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAg
T3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRN
ZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBM
b2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3Vw
cG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAg
ICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFi
bGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAg
IHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQg
T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJU
YWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVu
VHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlm
IChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92
ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUx
YjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlx
dWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5h
bWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZm
ZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQw
NGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcx
MWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2
LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291
cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsK
IHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAg
LTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0
YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4
IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4
M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVy
LCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFl
NWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcw
MTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFs
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdE
SSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFi
bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0
MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3
Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxv
YXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVj
dChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFi
bGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9F
UlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdP
UkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgp
LCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsK
LSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3
YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4
YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxl
Y3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRh
dGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxh
Y2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJl
cGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
U21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hh
cmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgp
OyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRh
LmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1
c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0g
bnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9j
YW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3Vz
dG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBj
ODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRh
U3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3Mg
bW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVu
dC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkp
CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5j
b3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRh
U3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21T
ZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0
NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmVi
NmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIy
MCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJr
ZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkg
ewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOwor
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2
LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFn
ZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUx
ZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNh
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYg
VVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAy
ZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjdmNGQwOTYyMDA1NjkxNjZkNzUxOTYz
ODkyYzg4OWRkNTI0Nzc5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
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
IApAQCAtNDg4LDcgKzQ4OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRh
SW5SVEZERm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWtV
VFR5cGVGbGF0UlRGRF07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCi0gICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5kYXRhSW5SVEZG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJU
Rl07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5k
YXRhSW5SVEZGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAKICAgICBpZiAoIWNvbnRlbnQuZGF0YUlu
SFRNTEZvcm1hdC5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNEYXRhICpodG1sQXNEYXRhID0gWyhO
U1N0cmluZyAqKWNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwog
ICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9S
ZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVu
dERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAg
ICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUp
OwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZv
clR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdl
LmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dl
c3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JU
U19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Q
cm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQog
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRh
Lmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0
IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0
aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29u
dGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBi
dXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0
aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUg
cGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICBy
ZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdl
cilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAg
ICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJ
bmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFz
dGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3
N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2
MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3Jh
cHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSld
OwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcg
QEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3Ry
aW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9y
VHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRl
Z3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVn
eSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cK
ICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7
CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsK
ICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi4zYjI4YmJk
MTAyNTBhYWNjMzNiNWRhYzBmMWRiYmNkOGI1ZTUxZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTE2LDIzICsxMTYsMjMgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgYXV0byB3ZWJBcmNoaXZlVHlw
ZSA9IGJyaWRnZV9jYXN0KGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgQ0ZTVFIoIkFwcGxlIFdlYiBBcmNoaXZlIHBh
c3RlYm9hcmQgdHlwZSIpLCBudWxscHRyKSkpOwogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOndlYkFyY2hpdmVUeXBlLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6d2ViQXJjaGl2ZVR5cGUuZ2V0KCld
OwogICAgICAgICB9CiAgICAgICAgIGlmICh3ZWJDb250ZW50LT5kYXRhSW5SVEZERm9ybWF0KQot
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+ZGF0YUluUlRG
REZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRG
RF07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5kYXRh
SW5SVEZERm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOk5TUGFzdGVib2FyZFR5cGVSVEZEXTsKICAgICAgICAgaWYgKHdlYkNvbnRlbnQtPmRhdGFJ
blJURkZvcm1hdCkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRl
bnQtPmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpOU1Bhc3Rl
Ym9hcmRUeXBlUlRGXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmRhdGFJblJURkZvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlUlRGXTsKICAgICAgICAgaWYgKCF3ZWJDb250
ZW50LT5kYXRhSW5IVE1MRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5IVE1MRm9ybWF0IGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZUhUTUxdOwogICAgICAgICBpZiAoIXdlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zv
cm1hdC5pc051bGwoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2Vi
Q29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmlu
Z107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVu
dFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6
d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsK
KyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAK
ICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9t
RGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAg
ICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgw
MzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFh
NmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBl
cyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFz
dGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZG
aWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8K
IHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAo
TlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRh
dGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEg
PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYg
KGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUg
OiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBl
cy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRm
b3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAg
ICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAg
LTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3Jp
dGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
ZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBh
c3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0
YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVE
YXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBj
aGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBO
U1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRl
bSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBu
c0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBj
cmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRh
LmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBh
dXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAzNzMxYTFhZDg1NGE2
YzgzZDZjZjA0ZTZlMTI2MmU3ZDAwOGY3OTA1Li5jN2QxOGJlMWQ2YWJjM2YwY2NhMzUwNmI2NWZj
M2Q5ODE2ZDI0ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtNDExLDEzICs0MTEsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aElu
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
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUw
NDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5
MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkx
OSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtz
ZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIg
eyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0g
ZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291
bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Np
b25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdh
dGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRh
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNr
OmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJk
YTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRj
YzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsx
MjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAg
ICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5
dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUo
KQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMg
d2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAv
LyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIp
KSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsy
MzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAg
ICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0
Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBu
b3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlh
bE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxN
YXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0
aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1h
dGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRl
ciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJv
dW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQg
KyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3Vu
ZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2
MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAK
ICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9h
ZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6
OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
CmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdh
ZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDggKzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJl
ZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVj
ZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwg
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBi
dWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXgg
YzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIx
ZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5
TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlm
IChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxv
Y2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFy
ZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAg
IERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7
Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVk
ZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
LCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0
ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAg
IENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNj
ZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2
NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRl
c1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJv
ciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAg
ICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQg
PT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdl
dExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9y
KCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
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
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRl
MGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1
IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3
b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAg
ICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2Rh
dGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250
aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAg
ICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNE
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggNGRhOWNjMDFhNmM2ZjNiZmIwYTI4MzNj
OWQ1ZTM0ZDc1MWFmMjc4OS4uMWMwYjU3OGEwYTA0MTE5ZjIyYmE2OWYyZjA5MjJmMzJmMzJlMjY5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8
RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHko
KTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShm
b3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAg
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQt
PmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNh
NzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJp
ZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBj
YXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBp
bmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNo
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNo
b3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3Rv
cmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5k
ZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUx
NGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0
ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBp
ZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAy
MmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2
NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9w
ZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9y
OwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAg
ICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1
NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQx
YmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDgg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEs
IGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRh
dGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNl
IHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2
MzM2YzguLmI3Nzg5MzJmMjgxYjcxMmUwMGZmN2FmMjY2YWEzOWJkZDIwMWMzMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+
c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3Bv
bnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmlj
cz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJh
MjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1
NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpS
ZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3Jt
YXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0
IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0g
V1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9k
eS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNp
emUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5
ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4
MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwx
MCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0
CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsg
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikg
eworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUy
MDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYK
ICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3Bv
bnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5
dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRl
R0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRl
cy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVl
MzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjExN2JjMTdjMzI2MTQ2MjY2Yjg4
MjgxMDFlYmM1OTNmOTkyNmY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJi
YzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lZmZiMTYyZGEwYzdiYjZkMTU4ZjQxMzFmMWU0YmQxYTUx
ZDYwYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCkBAIC00MCwxNyArNDAsMTQgQEAgcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9
IGRlZmF1bHQ7CiAKICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9
CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQogICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQo
YnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3
YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29u
c3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9
IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhf
dCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90
ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4u
NzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNp
Z25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBw
cml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJm
OTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVz
b3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxl
YXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2Jh
MjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBz
byB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQu
Ci0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUo
KS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
ZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIw
ODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVs
ZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3
N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDcz
NTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0s
CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7
IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2MmNi
MzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3
Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwog
Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1l
bW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAg
ICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIy
MGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFi
YzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVy
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4
LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwog
I2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBl
bmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNv
ZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVz
QW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBl
c0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEs
MTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlw
ZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsr
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQo
YnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3Bv
bnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0g
ICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9k
eSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVj
b3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBA
IC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMw
MTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1
ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAg
ICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRl
Y29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2Rl
YjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRl
bnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpA
QCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5
Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIw
M2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9u
RGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21E
YXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1
c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5
NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZk
ZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFs
PEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25E
YXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICgh
Zm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2
M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5
MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2
YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0
N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1Mg
TlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkg
eyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhh
c0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M3OWI0MTkyZjE5YWEx
YzFjMGM2YzQxZTExN2E2N2QzZGVlOTNiNy4uN2I4ZGY0NmFjOTA0MTcwNmY4Yzc5ZDEzNTA0NTk4
Yjg2YzViMTE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdGVtcGxhdGU8
PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8
PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQog
ewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRk
YjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBA
IC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICBy
ZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
IHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcw
LDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6
ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2Rj
NWE4ZmYwOTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEz
OGExYjdhZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxp
Z2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdo
bGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
dGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtb
X1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxp
Z2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1h
Z2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hs
aWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09
IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdo
bGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4
MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNj
MjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6
ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEs
IHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURh
dGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0
aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRh
LT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRD
dXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZj
NTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJi
NjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3
ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMg
b2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6
IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0K
QEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0Rmls
ZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkws
IHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBu
c0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0Rh
dGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNl
dERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdl
YkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcg
KzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5T
RGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1
NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0g
bV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0g
bV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVh
ZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5T
RGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6
QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8g
YnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwog
ICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihi
dWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9w
YWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVH
ZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
aW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uNTUxNjY2NmM1
YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2
ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNh
dmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQ
aWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3Qs
IFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpU
YXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDUzYmI2ZDVkZDEwY2I2MzUzYWFlZjkzNThlMDNiMDQwMDMyZjk2NzcuLjg4ODI3ZWIyOTEy
YTUzNGU5MjViYjVmYThmOTYyM2FlYzNhMTM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMTc4LDcgKzExNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdp
c3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAg
ICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAg
ICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2
OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3
ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
Q29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAg
ICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAg
IGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgp
LCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAg
ICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3Zl
KGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
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
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYThlOTBlNDI5YTZlY2UxMzY4N2I5ZjkxYmM3
MzgyY2E3Y2IwZmYzZC4uNjVlNWQ4MmEzNTdiY2JhYWY5NTA5MDM4NWQyYWVkYTJlZGYzNDI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1B
Y3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAg
ICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFs
bEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAg
ICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
YnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5NCw3ICs2NTk0LDcgQEAgc3Rh
dGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NjUs
NyArNzU2NSw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
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
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIw
NWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgq
bV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0
ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1
MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWVi
NTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVy
VW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVk
b1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1
OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlk
ZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2Up
KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0
MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjZmM2Y1NjZjNTJmMWUzOWRl
ZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJv
YXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmly
c3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZm
ZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVy
cmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBl
LCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJh
Y2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250
ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTMyNCw3ICsz
MjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRp
Zmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4u
M2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmlu
ZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
U3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
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
MjYwYzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVh
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAg
ICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9y
KCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRv
IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYz
M2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZF
KEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9k
ZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsK
LSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAog
Ym9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dF
QktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2
ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0
aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2
NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25z
dCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
OjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEz
M2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2
OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0
LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDI0YjY5
OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0YTliZTZkYmEzZjli
MjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01
NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkzZDQ4
N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1
NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVi
b2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIy
OTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2
Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJp
dmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4
ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0
cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJB
cmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hp
dmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFy
Y2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRl
LT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRB
cmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41YjEwZDNmZjc1Njcw
MTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZl
ci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0
aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVz
dWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVh
Y2MwNGRmYjdlMzRhYzczNC4uYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlND
b2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2Rl
cgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsK
LSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBk
YXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmls
LCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291
cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVu
Y29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAg
ICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURh
dGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJS
ZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5Oldl
YlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9y
S2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0
ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0y
MDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjgsNyAr
MzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBX
aW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRh
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRh
KCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNv
cmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNp
emUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYy
MTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1v
cnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0
LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFt
PiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5l
dyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0
NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1l
bW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAv
LyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0
ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291
bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAw
MTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0
MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09N
X091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5n
ZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5n
ZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92
ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJi
NDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4yYWFhZmNk
ZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVu
ZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVm
MDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBI
UkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3Ry
ZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAK
LSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGln
dW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpy
ZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9u
KiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
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
ZwppbmRleCA2M2RkZDgwN2RjMWJkMzk3NmU2ODgzNmY5M2M2NDM5MGI1MmNlZTRjLi5mOTI1ZDJm
ZmJkYjk3MjhiNjY0OTQwYjcxODViNjkyODdjMTI2MDU0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTExLTI2
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2VsZWN0aW9uIGludGVyZmFjZSB3aGVu
IGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYz
MjdiMjEyYzdjYTQ2OC4uMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRhNjc2NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKQEAgLTQzLDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNT
RVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
U3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVt
cHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9H
VChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwg
Y29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7
CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4MywxMyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZm
ZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1OSw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVy
LT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVy
LT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAg
IEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCks
IGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
ICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUsMzAg
KzE3NiwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYics
ICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gn
fTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7
CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsK
LSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3
KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZl
ci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAg
ICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRv
IGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAi
YWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAg
ICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1
ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRh
KCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wu
c2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6
ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hp
amtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5z
aXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAg
ICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigp
KTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIx
MCwxNSArMjE0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAg
ICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJu
IGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEu
Z2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYics
ICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVY
UEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwg
eyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9
IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQo
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3Mjkw
MzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAt
NjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkp
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445502</attachid>
            <date>2021-11-30 19:23:36 -0800</date>
            <delta_ts>2021-12-01 04:26:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211201142334.patch</filename>
            <type>text/plain</type>
            <size>406456</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
ZXggNjA0MzA4MmI5YmQ5MTkyNmRiZThlY2UwOWRjMzI0MWNhODE4ZTg5Zi4uOTdjMTU3Y2I1Zjlh
ZGM1ZGU2YmE5MzYzYjYzNWJjMGQ5NDM3MWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAK
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
OgorCiAyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9y
eSBpbnRvIGEgU2hhcmVkQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAx
ZDUwMWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3
ZTE4NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFy
Oi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVu
Y29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBh
YmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIx
Mzk2OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoK
KyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAg
ICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNv
dXJjZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3
NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhk
NmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAg
ICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEp
OwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8
U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgw
OWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICht
X21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUlt
YWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQg
PSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0
YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5
MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9
PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
aWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250
ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdl
XSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNl
bnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIx
YTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVp
bnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShm
b3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2Qu
LjZiOTEzZTQ3MDNmMDEzYzEzY2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJl
c3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9u
LCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAK
LXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVz
cG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHku
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRh
YmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VE
YXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAg
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgp
LCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0
dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6
cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERP
TVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAg
ICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
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
IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3
NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
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
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJh
bXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAog
ICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFz
ZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVm
ZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3
MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNj
ZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNG
b3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAK
ICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0g
V1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhi
NzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwg
dHlwZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAg
LTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
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
dC5jcHAKaW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVm
NGQyZDdhYzdlZWNkOTE3YzFmNjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAg
ICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1f
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25O
dWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5k
ZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4
YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2Up
CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2Rl
bEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1
MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMx
NjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpT
Qzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGlu
Zy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBp
bXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0o
c3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRk
MDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAy
YjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29u
dGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9j
b250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9j
b250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2Nv
bnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAg
ICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpA
QCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxl
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
Y29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1
NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
IW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0Zv
bnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBv
dGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAo
bV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRl
U291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGlu
Zyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJk
ZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxl
Y3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VF
bGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywg
dG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1
ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0
byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dl
bmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1t
ZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5m
YTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
ZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIy
OGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBE
YXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENv
bW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJ
bWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0
YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJs
ZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAg
ICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1
dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1
Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5
OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmll
cjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5k
ZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1
NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250Owog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0
cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0
cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVs
ZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVk
aXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxl
bWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRh
ID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBv
dXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91
dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsx
NTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRh
JiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJD
b250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9k
b2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8v
IEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBh
bHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
IGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2li
bGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4
ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjVi
MTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRh
Y2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewog
ICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsK
LSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVu
YW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAg
LTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAg
ICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTli
MzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4
MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFs
dWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVt
ZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZp
bGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0
Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVB
c0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1
cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQog
CiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5k
QXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxh
Y2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1l
Q29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFy
a3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVu
dCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDli
Nzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2
b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBp
bWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rp
b24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2Vw
YXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGlu
IFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBz
ZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNm
M2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJp
bmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXpl
U3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkp
LCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGly
ZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAs
ICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6Omxv
YWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
dGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVu
dCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3Rv
cmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFy
c2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBv
bmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQg
YW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5
ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1
ZjRmMTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmICht
X2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBt
X2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0
YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAK
ICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMx
Nzk3NGYyNzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
M2RhZmU2NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4
MTMyZDM3ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
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
aW5kZXggYzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFi
ZTViYTQ5MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1
ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBS
ZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3Vy
Y2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBj
N2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxv
YWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2Ew
NjRiYzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMy
MDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNr
aW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlm
YWRmN2I3NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVm
ZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5
LDcgKzMxNDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNs
eShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZp
ZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5
MGEwZTE1MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhi
MGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
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
cHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0
ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3
b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291
bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9u
cy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3Mg
JiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
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
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li45Njk2ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhl
Y3V0ZUNvbW1hbmQoKSkgewpAQCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFn
ZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1u
SW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAg
ICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNo
ZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5m
NWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
OTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRh
dGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRh
dGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
RGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8v
IFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJj
ZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNl
KSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAg
ICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgp
KTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUs
MTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90
IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1
dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAm
JiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBl
SUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJl
c291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBj
cmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJl
c3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhKQogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0
KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImIGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkg
IT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChw
bGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcg
QEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291
cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlm
ICghbWFpblJlc291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5v
dCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpA
QCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3Bv
bnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRv
IGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZy
b21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNl
dCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRo
ZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRv
CiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFt
ZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjcz
MzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5
ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsy
MDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRh
LmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEu
YXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBo
ZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgog
ICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmly
ZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQu
LjY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKQEAgLTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lk
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
NTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYw
MWQ4ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25z
dCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50
IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0Owog
CiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNo
ZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Cisg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAt
OTksMTEgKzk5LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQg
aXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0
byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2Yw
NDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9u
dDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1
LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25z
dAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQog
Ci1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAh
ZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wg
d3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0
ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7
ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5n
ID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVm
ZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0
aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250Ojpj
aGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+
Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDli
ZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVk
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0
Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBw
bGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBm
ZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFy
SW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAg
ICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdl
OjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVw
ZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFn
ZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAg
ICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBk
YXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0
UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYz
MWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2Ix
MjgzNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQg
ZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4
ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAw
OTFlOThmOTkyNGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAg
IHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3
LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmlu
Z1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
OwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewot
ICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3Jl
bWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAg
ICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRh
dGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIu
LmExMDVlMmI0YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZm
ZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVm
ZmVyKTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAz
NWJjMjc4Li5jY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIx
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
ZjJjODM5Li5kZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRo
ZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAg
IG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJl
c3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEv
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
ZTQxOGYxN2I2NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDgg
Kzk4LDEzIEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVj
NGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3
MTlhMmEzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwCkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRy
YWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBj
Li5jMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02
MywxMCArNjMsMTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2Rj
ODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5
Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1
MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
U2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRl
NzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZj
ZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBA
IC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2
NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1
YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJp
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
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXgg
MWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2Vk
Nzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBl
czsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwog
CiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uNWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShm
aWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShw
cm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2
ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRC
dWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVN
b2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5
VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAg
ICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMw
ICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0
IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZp
cmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxp
bmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIx
NTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
KyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJp
bmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFy
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsK
LSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQo
KTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJp
bmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHko
KSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6
aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAg
KzE5MiwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAg
ICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5z
ZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKQEAgLTIxMywyMyArMjAzLDI4IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7
CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsK
ICAgICBtX3NpemUgPSAwOwpAQCAtMjQzLDE3ICsyMzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwog
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
QEAgLTM1NSw4ICszNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJl
ZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7
Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1f
c2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcg
KzM2MSw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25z
dAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7Cisg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAg
IEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1
ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7
CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxl
TW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1h
eVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Cisg
ICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAg
IH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29u
c3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50
OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MzAs
NyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDQxLDcgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgog
Ci1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29k
ZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDk1LDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRv
IHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3
ICs1MTQsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAot
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2Vn
bWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9z
aXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVu
dC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzgsMjEgQEAg
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7Cisg
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
ICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAg
ICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAg
ICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBj
aGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBA
IC01MzQsNyArNTc4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVk
NjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYx
Y2YxY2IwMmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02
MiwxNDYgKzYyLDE0NiBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2Nh
dGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRB
VElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAj
aWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMq
KTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxp
bmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8g
b25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUg
c2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTog
QXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdp
dGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBj
b3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNv
cHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVh
ZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5
QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0g
ICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8g
YSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAg
ICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBV
U0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CisjZW5kaWYKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92
aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgog
I2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
ICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisj
ZW5kaWYKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMjEwLDEwMiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5k
KCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFr
ZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24p
IGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2Vn
bWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3Rv
ciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNz
IGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxB
cmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVk
LCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVz
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzMxNSwy
MSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJj
OTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0
KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNB
cnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29y
ay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMy
M2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXko
KQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUu
LmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0
MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24g
YWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9u
LgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2
YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3
ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMp
Ci1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXIm
IHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0Jp
dG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1h
Z2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVz
OkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlm
CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlw
ZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgz
OGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
QEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
IEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bv
c2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZv
aWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdl
YkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9j
YXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZE
YXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwog
ICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNv
dXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQog
Ci1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBh
bGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2Uy
MmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2Jm
ZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1
ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEz
OCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5p
c0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2
LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50
IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBp
bml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRh
dGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3
IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgog
ICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMg
dGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0
aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5
SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXgg
N2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2Jm
OTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5
LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVy
IDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJT
aXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNv
ZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQz
NWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThj
YjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fz
c2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZt
X3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9n
ZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1
NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMx
NDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+
S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3
ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1Jl
ZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8
R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewog
ICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVz
X25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9
LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0
ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdp
biwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmln
aW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRp
ZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250Ojpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250
OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7
CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmVi
YmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVl
MzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxp
dHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpO
bywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxs
b3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0
aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6
OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRl
Y2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAg
aW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlz
IGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3Vs
ZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsK
IAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9u
RGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5n
IGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1l
bW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZj
MjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVs
PiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChX
VEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1v
ZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3Ry
aW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5
ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQx
NGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Rl
bCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmlu
ZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
LCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9t
aW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQ
dHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZN
b3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4
MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXpl
KCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQog
ewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWlu
dDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3
NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNp
emVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
CiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsy
ODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXpl
OwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRv
U2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAg
ICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1
NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5
OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlz
V09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
KTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBv
ciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29u
dmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdy
aXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUg
Y3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRz
LCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdh
cyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUg
c2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUx
MTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAy
OGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpT
T04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0i
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
aW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5
YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpT
T05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03
MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxO
U0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
a2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhB
VkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0
YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBz
c2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFX
aXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25z
Ok5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBA
IC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBl
eHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0
byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwot
ICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lv
bnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGly
ZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBA
IC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAg
ICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpw
YXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9i
bGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250
ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkz
NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRh
KiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5
YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURz
LmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtl
eVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEg
PSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVy
Q2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47
CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmly
c3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhr
ZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmco
InBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXls
b2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3Qo
V1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RG
TW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJs
ZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7
CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRm
M2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsK
IAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVy
LmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNs
eUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFh
OTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3
IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
KCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYg
c2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBB
cHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFr
ZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFn
cyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVu
ZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJl
YW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1
ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJk
YTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9w
YXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1
ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVl
c3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
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
ZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNl
NTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5s
aW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwg
Z3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1h
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
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmYTcwOWZlYTUxNmYzNTg1ZmMyMjE3MmI1ZGIw
ZmViZTlhZGI3NjgxLi5jMDdmYjU2OTg1OGUwNDhjYmEzODA4MzhiYzFlMzEzOTFkYjIyOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzY3Myw3ICszNjczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRp
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
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjI3NGUwNGQ3YjdmZGRiZmNhMzY1ZDIx
ZmVhN2I4NjUwODlhNWY5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBT
dHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAg
IDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJ
Zk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENl
bmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KCkpKQogICAgIHsKICAgICB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBt
X3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
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
ZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGlj
IGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAg
JiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+
bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyAr
MjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAg
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0
SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdl
RGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNi
MDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAg
ICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAg
ICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
I2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThl
NWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1
NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0
b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0
YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVu
dC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVu
dC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNv
bnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVE
YXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAg
LTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9
CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAg
ICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVu
YXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpO
U0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRl
ZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAg
ICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVu
YXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpO
U0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRl
ZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJy
b3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRS
ZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyAr
NTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRl
bnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bh
c3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdl
dCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBk
YXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUo
KSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07
CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAK
ICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdl
LnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlw
ZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVj
bGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJ
RnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlw
ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNl
bnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dl
c3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFz
dGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAj
ZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1f
REFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJv
YXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9t
RGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAg
ICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBj
cmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwg
IWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkg
eworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAg
ICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMg
aW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAg
ICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90
IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAg
ICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3
ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBA
IC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07
CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNv
Y29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
cjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4g
c3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50
ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJl
ck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0p
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7
CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhi
ZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0
YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxl
YXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAg
ICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwg
UGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRl
eCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRl
bUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8g
ZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0g
W2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZk
MzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBj
MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRh
dGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3Jp
Z2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmco
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAg
IHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIw
OTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5
ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25z
dApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlz
dEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdp
bigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRl
cmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUp
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0
YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNl
cmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICgh
ZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQo
KTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1v
ZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVy
biB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQs
NyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRv
cHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNE
YXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVi
b2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcg
PSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2YwNGU2
ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQyNGVi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29u
c3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxh
dHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0
ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQz
OTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1
NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUlt
cGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBz
dHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAg
IHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFt
ID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGEx
NDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
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
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3
YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkw
YmVhNjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6
ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7
CiAKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9w
Q29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAg
IC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0
dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBp
ZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVG
aWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4s
IDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3Vj
Y2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRs
ZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwCmluZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFj
Zjg3MjMuLjA3MzlkZGY0NGJmMDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBp
ZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcg
KzQ1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBH
ZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0
RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQg
Ynl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVh
ZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3Io
KSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDEx
ZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAw
MDJiMGZiY2U2NTY1ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKQEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVB
bGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZm
ZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmlu
ZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEs
NyArMjcyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwor
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2so
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8g
U3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5z
cGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52
YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZm
NjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwot
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCmluZGV4IDRkYTljYzAxYTZjNmYzYmZiMGEyODMzYzlkNWUzNGQ3NTFh
ZjI3ODkuLjFjMGI1NzhhMGEwNDExOWYyMmJhNjlmMmYwOTIyZjMyZjMyZTI2OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nl
c3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9u
c2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RG
Ojpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAg
IGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsK
LSAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2go
KTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4
IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFm
OGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3
ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZv
aWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6
ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlw
dFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxl
TWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFy
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQy
NmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEz
MTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RB
bGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIx
ZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25z
dCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAy
N2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQy
OGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVt
b3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVD
b2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7Cisg
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIs
IGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4
OTMyZjI4MWI3MTJlMDBmZjdhZjI2NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhf
dD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAg
ICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUo
bWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmNwcAppbmRleCAzM2E5ZDRiNmRmYjg4MTBkMmY0MjdlMGY4NzZiODgxZjA0
MGVjMmU2Li5hMDc2MTdiOWE4OWViNmQ1ZjJiMjk2ZjNlZGFiM2IzOTllYjI0OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciks
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAwYWZjYjA3
MDdkYWVkNjdmMGEyNzc5NjdkNWVjNDcyZGMwZmUwYzk3Li45MTZkYzg2MWRlMDgyMGFmNzkwMjAy
YmIwY2ZiMTIyNTVlOGRkZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB1
c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRG
b3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxi
YWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIw
ZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlm
IChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRm
YmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVj
b3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0
aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNw
b25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3Qg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBi
b2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdU
Rk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHku
c2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXpl
KCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5
ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1
OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAg
QEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAog
CiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1f
YnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsK
KyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
Ym9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1f
YnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAg
cmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZm
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
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVh
OGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhh
MWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdo
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
eCBiMmY1NjVmZjA1NDNkNjIxM2M2MzhkOGFjMzQyOTVhZGFlOTkzNWYwLi5lMGZlOTQ0ZWQ3MTcz
MjNjYzRmNDUzYjA4NTJhODA4MGUwYTYzM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAg
IGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3
ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2Yz
MGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
aWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBp
ZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAg
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShk
YXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
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
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDVi
YThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1f
cGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVi
b2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2
ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUx
OTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVu
ZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9T
dGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTky
MjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFh
NzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYw
MGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2Fy
ZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0
IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVy
OwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJp
ZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwg
b3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNr
IHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVu
dC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0
LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhz
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZp
ZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNm
ZjM1NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
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
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
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2
MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAg
IGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigp
LmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNj
YWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShB
VktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUg
PT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0j
ZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJv
b2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJL
SVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7
CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVl
N2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRk
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5z
aW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlv
bjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3
Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygp
IGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2
b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
U3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNm
MjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2Njli
NDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkg
V2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwg
b25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3
MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIz
N2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUs
MTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0
cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdk
ZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9h
cmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5
ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNj
M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3
ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJp
bmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJj
aGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZl
RGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNo
aXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+
ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJj
aGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXgg
ODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDEx
NTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFn
ZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXIt
PmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0
ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6
YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3Vs
dC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNj
MDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpA
QCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29k
ZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIK
IHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0g
ICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0
YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwg
KnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0
YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJj
ZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNv
ZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAg
ICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAg
IH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRh
S2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVz
b3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJS
ZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktl
eTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4
dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAy
LDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJu
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2
OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2lu
ZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgp
IDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXpl
KCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5j
cHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3
MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5
U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1v
cnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDog
bV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3
ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcg
TWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUz
YmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1v
cnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBD
T01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8g
SVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRl
cmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpA
QCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6
Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
IE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50
IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4
NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1
YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2
ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9P
dXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShD
RkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0
KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShD
RkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0
KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUo
YnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQy
ZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0y
NjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRl
NDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRV
c2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAz
OGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJF
U1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVh
bSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0g
ICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVw
cmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioq
IHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdh
YjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhm
OWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2Uq
IFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2Vi
UmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0g
PSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1
NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAK
IAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYmU0ODQ3MTdkNGFiNDM3YmVlNjg2N2YzMzgwODc0YTdiN2NhZmU3NC4uM2FhN2Q0MmFi
N2U0YmQ5YTMzNjhmMzBkNzI4YjY5ZTU1NzQ3YzM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMS0zMCAg
QkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQg
RXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFnbm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYy
YjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLjFiNzM2M2E4MjcyNWM3Mzg1NGQ0OTk2
ODQwM2JjMGZhNDU0YTY3NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MywzOCArNDMsMzggQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
OwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9
PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RS
VUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNv
cHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBA
IC04MywxMiArODMsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1Rf
TlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5h
cHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1
ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC0xNTksNyArMTYw
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXpl
KCkpOwogfQpAQCAtMTc1LDMwICsxNzYsMzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0g
eydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2on
LCAnaycsICdsJ307Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywg
J2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisK
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0
YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdo
LnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwg
ImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNo
ZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1
ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVm
Z2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVy
KGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZl
cihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUo
KSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwg
Z2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgp
LCAibCIpOwogfQogCkBAIC0yMTAsMTUgKzIxNCwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50
KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBt
YWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZm
ZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8
dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2Qn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30s
IHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVy
KHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0g
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2En
IH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9I
ZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNm
YjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVs
bG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRh
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445504</attachid>
            <date>2021-11-30 19:33:51 -0800</date>
            <delta_ts>2021-12-01 04:26:55 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233030-20211201143347.patch</filename>
            <type>text/plain</type>
            <size>417768</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
MmYxLi4yNzRlMDRkN2I3ZmRkYmZjYTM2NWQyMWZlYTdiODY1MDg5YTVmOTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAg
ICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisg
ICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAg
fQogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEy
Li41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwg
aXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVy
LmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJk
MzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjVi
NzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVh
dGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0
NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMo
W2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1l
bnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJv
dW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4
OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2Zk
MWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdp
dGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50
OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8v
IFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVl
cy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0
aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3Jy
ZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0Nv
cnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8g
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBl
Q292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7
CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAg
ICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3Rv
cjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAor
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBh
cnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2Ug
ewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1h
dGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhH
bHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2
b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZt
YXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVj
dCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFu
dHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQog
Ci0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29u
c3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1i
bHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNz
ZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkg
PSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAs
NyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRp
Y2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxH
bHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0
IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxH
bHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRd
KSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRo
Q29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1h
dGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0
YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1
Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJ
bmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlm
IChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJp
YW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2
NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21h
dGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90
PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZi
MWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3
ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
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
LmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3
MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBh
ZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9u
dERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJs
ZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBi
eSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFt
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFt
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250
TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qg
b3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVy
KiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0
YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAv
LyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUg
c3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1Jl
ZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVG
b250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3
Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
c3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwg
NTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIz
NWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7
CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVm
ZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFn
ZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9
OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3Vi
VGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3Bl
blR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZh
cmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAg
ICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1
YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9m
ZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBM
aXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRh
YmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8
fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyAr
MjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRl
eFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29r
dXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxv
b2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNl
dDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGlu
ZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7
CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsr
aSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYm
IGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVj
dCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVy
ZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFn
LCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVy
ZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2Nv
dW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5
c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4
LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3Bl
blR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29u
c3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlw
ZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBA
QCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBA
IHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAg
ICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChi
dWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAg
c3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0
dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAK
LSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNj
cmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxG
ZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29r
dXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQp
OyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExp
c3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCog
ZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9m
ZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9v
a3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExp
c3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykK
QEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBs
YW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBz
dHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAg
ICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEds
eXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Ym9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1
cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRp
Y2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6Okho
ZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFi
bGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9y
IGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFn
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAo
IXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFi
bGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihi
dWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0
MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0
cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4
OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3Mg
Rm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURh
dGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQu
LmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0
YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
ICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9w
ZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1
MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4
MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4
ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxI
Rk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0x
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9u
dCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZv
bnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXpl
KTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBW
T0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRG
b250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4
IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYx
OTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxh
Y2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZm
ZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9j
dXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3Qg
eyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsg
bV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdl
OwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5
ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAg
IC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBp
biBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEu
YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250
aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3Vv
dXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVn
aW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVz
ID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2Rl
Y29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUo
YWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZk
MzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJk
NGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsK
IH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZl
ZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9
IG1hcmtlci0+bmV4dCkgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAg
IGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAj
ZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMp
Ci12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZh
YjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2Zk
ZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVu
dGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZh
YzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5
LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0
ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFG
b3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRl
bnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29u
dGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQp
IHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9t
RGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9t
RGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkg
ewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAg
ICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsK
IAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5p
bWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0
ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBA
QCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNf
UFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEg
PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRh
dGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBk
YXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQodHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJv
dmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5o
YXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewot
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBv
ZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGli
aWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRl
bnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0
IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhp
biB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBh
Z2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0
dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIp
aW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAg
aWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5k
ZXg6MF0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3Rl
Ym9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApk
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
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
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
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
ZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVh
Li5jNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDgg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRh
KCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxl
Q29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRl
bXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhh
bmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0
dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBp
ZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEw
YmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVl
MjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0
OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAg
ICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihi
eXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRG
aWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAw
KSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVu
dHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0
YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVj
MDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywx
MSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2Nr
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNw
b25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9u
c2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmco
YnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICgh
cmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3Rh
bmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0
YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3Ry
aW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlm
aWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0z
MzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3Bv
bnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25z
ZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVk
NjQwZDA0ZDRiZDQ1Li5hNGUwYWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC03OCwxMSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNM
b2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsK
ICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7Cisg
ICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEg
PSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRp
Z3VvdXNEYXRhOworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAg
ICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAg
ICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2Mw
MWE2YzZmM2JmYjBhMjgzM2M5ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5
ZjJmMDkyMmYzMmYzMmUyNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3
ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGll
bnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3Bv
bnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFu
ZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRj
MWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2Ny
aXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUg
bWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2Ny
aXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBz
aG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAK
IHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEw
MzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFs
bG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4
YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYz
MWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4g
Jmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5l
YmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
QEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVN
ZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFS
ZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRl
ci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8q
IHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0
aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4
OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRk
MjAxYzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9u
b3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChi
dWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5h
cHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
IAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggMzNhOWQ0
YjZkZmI4ODEwZDJmNDI3ZTBmODc2Yjg4MWYwNDBlYzJlNi4uYTA3NjE3YjlhODllYjZkNWYyYjI5
NmYzZWRhYjNiMzk5ZWIyNDk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9i
b2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgKaW5kZXggMGFmY2IwNzA3ZGFlZDY3ZjBhMjc3OTY3ZDVlYzQ3MmRjMGZl
MGM5Ny4uOTE2ZGM4NjFkZTA4MjBhZjc5MDIwMmJiMGNmYjEyMjU1ZThkZGYyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYm
KTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAg
dXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAg
ICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVl
MTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3
Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEo
KSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2
YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2
MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAt
NTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29y
ZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAg
ICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBk
YXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUo
Y29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICBy
ZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFn
ZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNl
Qm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJv
ZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZh
ZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5j
b2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVm
ZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1f
YnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6
ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwg
aGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
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
Y3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQuLjJjMTYx
MWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDQ5ICs1NSwxNSBAQCBib29sIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRs
ZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKENGKQotc3RhdGljIHZv
aWQgc2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRlKHZvaWQgKnB0ciwgdm9pZCAqaW5mbykKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hh
cmVkQnVmZmVyKCkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGluZm8p
LT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBjcmVhdGVTaGFyZWFibGVSZXNvdXJj
ZURlYWxsb2NhdG9yKCkKLX0KLSAgICAKLXN0YXRpYyBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+
IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IoU2hhcmVhYmxlUmVzb3VyY2UqIHJl
c291cmNlKQotewotICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLAotICAgICAg
ICByZXNvdXJjZSwKLSAgICAgICAgTlVMTCwgLy8gcmV0YWluCi0gICAgICAgIE5VTEwsIC8vIHJl
bGVhc2UKLSAgICAgICAgTlVMTCwgLy8gY29weURlc2NyaXB0aW9uCi0gICAgICAgIE5VTEwsIC8v
IGFsbG9jYXRlCi0gICAgICAgIE5VTEwsIC8vIHJlYWxsb2NhdGUKLSAgICAgICAgc2hhcmVhYmxl
UmVzb3VyY2VEZWFsbG9jYXRlLAotICAgICAgICBOVUxMLCAvLyBwcmVmZXJyZWRTaXplCi0gICAg
fTsKLQotICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsICZjb250ZXh0KSk7Ci19Ci0jZW5kaWYKLQotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCi17Ci0gICAgcmVmKCk7IC8vIEJh
bGFuY2VkIGJ5IGRlcmVmIHdoZW4gU2hhcmVkQnVmZmVyIGlzIGRlYWxsb2NhdGVkLgotCi0jaWYg
VVNFKENGKQotICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURl
YWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxD
RkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgR1JlZlB0
cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRh
dGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJl
YWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgdGhpcykpOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRlcy5nZXQoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAor
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9
CisgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0g
U2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpAQCAt
MTM4LDkgKzEwNCw3IEBAIFNoYXJlYWJsZVJlc291cmNlOjpTaGFyZWFibGVSZXNvdXJjZShSZWY8
U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSwgdW5zaWduZWQKIHsKIH0KIAotU2hhcmVhYmxl
UmVzb3VyY2U6On5TaGFyZWFibGVSZXNvdXJjZSgpCi17Ci19CitTaGFyZWFibGVSZXNvdXJjZTo6
flNoYXJlYWJsZVJlc291cmNlKCkgPSBkZWZhdWx0OwogCiBib29sIFNoYXJlYWJsZVJlc291cmNl
OjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiB7CkBAIC0xNjIsNyArMTI2LDcgQEAgdW5z
aWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX3Np
emU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oCmluZGV4IDdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcuLmEwZWQw
ODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAKLWNsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVhYmxl
UmVzb3VyY2U+IHsKK2NsYXNzIFNoYXJlYWJsZVJlc291cmNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlYWJsZVJlc291cmNlPiB7CiBwdWJsaWM6CiAKICAgICBjbGFzcyBIYW5k
bGUgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVh
YmxlUmVzb3VyY2U7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OwogCi0gICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgdW5zaWduZWQgbV9z
aXplOyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBtX29mZnNldDsKKyAgICBjb25zdCB1bnNpZ25l
ZCBtX3NpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGMwYjZlZjNmYTNhMmUxMjA0
YzY3N2VjZjg2YWVjYmQxOWJiNjRkN2IuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAx
YmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZl
cihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgog
fQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIo
RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
ICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTIzNCwxMyArMjM0LDEzIEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpIDwgYnVm
ZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVyID0gc2hhcmVkTWVtb3J5QnVmZmVy
LT5jcmVhdGVTaGFyZWRCdWZmZXIoYnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNp
emUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIs
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVp
bnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAg
ICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8
PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsm
XShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0
ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4
Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwog
ICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9
IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmll
ciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlm
aWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApA
QCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZm
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVm
ZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVm
ZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1
NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2Nzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxv
YlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFi
YS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1
OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVm
ZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEu
LjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVu
dENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAo
aW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMx
YTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsx
MDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2
YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcu
LjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0
YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTll
ZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4
NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0
YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFt
X2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9
IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJp
YWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24s
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYmFkNDdjMDc2ZWNkYzVhOGZmMDkwZjY3MTE3ODE1YzdlYzlkNjQ0
NS4uNmZhNDFmMzQ0Y2U2OWIyYzZjODIxMjlhNjAxMzhhMWI3YWRhNjNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk1LDcgKzE1
OTUsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGln
aGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQg
PSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0
TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5o
aWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxp
Z2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5O
ZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMy
OS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIx
MSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBv
c2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3Ro
OwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4g
MCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAg
ICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVm
MGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUz
NjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUt
Pm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KaW5kZXggMTc0NzBjNjJjNzIwZGRlODJiNzkxNWI3YjNiNTgyMDIz
ZWI1MWVjNy4uYmJlZjY2NzM1MWEwYTJiZjU4ZGZhZjVhNzIxMDAwNmEzMThlYWY0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAog
ICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hh
bmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAg
ICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcigwKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUuZGF0YVNpemUpKTsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUu
ZGF0YVNpemUpOwogICAgICAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVi
b2FyZFR5cGUpOwogICAgICAgICBkaWRNb2RpZnlDb250ZW50c09mUGFzdGVib2FyZChjb25uZWN0
aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcHJldmlvdXNDaGFuZ2VDb3VudCwgbmV3Q2hhbmdlQ291bnQp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2
NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0
ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAg
ICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0
cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNv
cmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1f
cGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0p
OwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAq
ZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUs
IHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikg
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRh
Rm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRp
KCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07
CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rpbgog
ICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7
Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAg
ICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25z
Ok5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0
NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVl
c3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdl
c3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVi
b2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmll
cikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEo
TlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4
MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
aXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5l
Y2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYjJmNTY1ZmYwNTQzZDYyMTNjNjM4ZDhhYzM0Mjk1YWRhZTk5
MzVmMC4uZTBmZTk0NGVkNzE3MzIzY2M0ZjQ1M2IwODUyYTgwODBlMGE2MzNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJz
dFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMz
ZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4g
RXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBt
X3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0
YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5z
aXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25z
ZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5k
ZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5
YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRl
cnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJF
dmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBX
ZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODlj
MDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5
YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
OmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikK
IHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURh
dGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1
NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZl
N2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0g
KEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjoo
aWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBb
cGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChO
U0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVu
dE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5
LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9y
aWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5s
ZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAg
aWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZl
ci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVy
biBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFu
dDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsK
ICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0
cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChO
U1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3Ig
dGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1l
LiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAg
ICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAg
ICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVy
dFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggNDY3OWQ3YjA5ODFhYTdkM2ZjZDliZGU5MGVkNmZmMmFjMjMyZWUxNS4u
YmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcg
QEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYgaW1hZ2VIYW5kbGUKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGltYWdlSGFuZGxlLmRhdGFTaXplKSk7CisgICAgYXV0byBidWZmZXIgPSBzaGFy
ZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7
CiAgICAgcGFnZUNsaWVudCgpLnNhdmVJbWFnZVRvTGlicmFyeShXVEZNb3ZlKGJ1ZmZlcikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpp
bmRleCA2ZDMzMzg2OWU0ZTAwMTJkMjdkM2ZlODVkODVlNTNhNGVkOTY5NjBhLi5hN2ZiNGFhYmNm
NzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcg
V2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTI0MCw3ICsyNDAsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+
ZGF0YSgpKSwgaXBjSGFuZGxlLmRhdGFTaXplKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVm
ZmVyLT5jcmVhdGVTaGFyZWRCdWZmZXIoaXBjSGFuZGxlLmRhdGFTaXplKTsKIH0KIAogYm9vbCBX
ZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQpAQCAtMjc1LDE1ICsyNzUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFMKICAgICBhdXRvIHNoYXJlZE1lbW9yeUltYWdlID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeUltYWdlKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUu
ZGF0YVNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZUhhbmRsZS5kYXRhU2l6ZSkpOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Ci0KICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFu
ZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUFyY2hpdmUtPmRhdGEo
KSksIHN0YXRpY19jYXN0PHNpemVfdD4oYXJjaGl2ZUhhbmRsZS5kYXRhU2l6ZSkpOworICAgICAg
ICBhcmNoaXZlQnVmZmVyID0gc2hhcmVkTWVtb3J5QXJjaGl2ZS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KGFyY2hpdmVIYW5kbGUuZGF0YVNpemUpOwogICAgIH0KICAgICBwYWdlQ2xpZW50KCkuc2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlbmFtZSks
IGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgV1RGTW92ZShhcmNoaXZlQnVmZmVy
KSwgb3JpZ2luSWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5
NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAt
MzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHls
ZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmly
dHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpE
b2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJl
dHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBi
YzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3
Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8
V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAg
ICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9Q
YXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
ZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAg
ICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVn
YXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29u
dHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5k
bGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRh
dGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUp
OwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1
Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNk
ZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRv
QVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyAr
MTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDog
ZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJv
YXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcw
YWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1
OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2Uo
V2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9u
TmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdl
JiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdl
JiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2
YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uZTAwNmM0NjRlNjE0M2Y5M2JiMjY3ZjZhNDA3MmI5Zjdk
ZTNhODljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2
b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEp
CiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVm
KCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERh
dGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6
Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+
ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAg
ICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVk
IGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgp
LCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAK
ICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVx
dWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShl
bmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1w
bCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4
ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1
OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1t
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUg
PD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwog
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBh
dGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1
Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi5kZGQ0OWM0MTA1ZmM1N2EyOWJjMmE2MGMxZmUyNzBjOGEz
OWYxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBT
aGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1
MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQg
bm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAg
ICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIx
YTcyNjBkOTRkNDhlLi4xNTIwNWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxX
cml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCpt
X3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2
Li45MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAK
ICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAg
ICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2Vh
MDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291
cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1l
KCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmluZGV4IDVkMDVjMGVhYjc2YjYyYjRmODM2Yzg1ODIyMWZlYTQ0NzJlMDU1NmUu
LjZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVz
KSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWlu
dDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNo
YXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5h
bWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikp
OwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRp
dmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hh
bmRsZTsKQEAgLTE0NSw3ICsxNDUsOSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJgogICAgIGlm
IChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6
Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7
CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5k
bGUuZGF0YVNpemUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKQEAgLTMyMiw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQw
NCw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFu
ZGxlKSwgMCk7CkBAIC00MTIsNyArNDE0LDkgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2kKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXIt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpcGNIYW5kbGUuZGF0YVNpemUpOwogfQogCiBVUkwgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgw
OTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4zZmYzNTU4MDhlMWQ2ZWIyYWUz
MmI1N2I3ZWJmN2UzNWFjZmY0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdl
dE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4m
IHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3
ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8
U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAt
ODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
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
Y29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDc3Zjg0ZGNlN2ZhYWE0OTJhYTU1ZmVhMDI1YmI2MDZlMGZkMDZjNWEuLjEwYjRhYTQ0MDJm
OGUxNTBhYWRkNmYyYmE0YzQwN2FiNDU4ZmIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzM4LDcgKzc3MzgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hh
cmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9y
ZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGlwY0hhbmRsZS5kYXRhU2l6
ZSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGln
aHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoc2hhcmVkTWVtb3J5LT5jcmVhdGVTaGFyZWRCdWZmZXIo
aXBjSGFuZGxlLmRhdGFTaXplKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMg
OiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0t
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
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0
YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3Vy
Y2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNv
dXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
V1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4
IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAx
MTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1
YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTQ4NDcxN2Q0YWI0MzdiZWU2ODY3ZjMz
ODA4NzRhN2I3Y2FmZTc0Li4zYWE3ZDQyYWI3ZTRiZDlhMzM2OGYzMGQ3MjhiNjllNTU3NDdjMzhi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdub3N0
aWMgZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2
OC4uMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRhNjc2NyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQz
LDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVm
ZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
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
LCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRh
KCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7CiAgICAgRVhQRUNU
X1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4MywxMyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwot
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOworICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
KSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywg
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlcikKQEAgLTE1OSw3ICsxNjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7CiAg
ICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgw
LCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6
ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBBU1NFUlRf
RVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUsMzAgKzE3NiwzMyBAQCBz
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21l
RGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsK
LSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0
b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKKyAgICBWZWN0b3I8
dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0g
eyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CiAgICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdo
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRv
IGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwot
ICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGFiY2Rl
ZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7
CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAg
IGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEo
KSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6
ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wi
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVm
Z2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwg
ImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIp
OworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZl
cihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVj
a0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIxMCwxNSArMjE0LDE1
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgICAgICAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAg
ICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9
fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
IH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCiAg
ICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkp
OwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtl
QnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0p
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkz
MzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3MjkwMzQ1YjQyZjEwYzli
MmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNjIsNyArNjIsNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZG
aWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445551</attachid>
            <date>2021-12-01 04:27:04 -0800</date>
            <delta_ts>2021-12-02 04:06:12 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233030-20211201232702.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>445553</attachid>
            <date>2021-12-01 04:28:18 -0800</date>
            <delta_ts>2021-12-01 04:29:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211201232815.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>445555</attachid>
            <date>2021-12-01 04:29:49 -0800</date>
            <delta_ts>2021-12-02 04:06:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211201232946.patch</filename>
            <type>text/plain</type>
            <size>406466</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
ZXggNjA0MzA4MmI5YmQ5MTkyNmRiZThlY2UwOWRjMzI0MWNhODE4ZTg5Zi4uOTdjMTU3Y2I1Zjlh
ZGM1ZGU2YmE5MzYzYjYzNWJjMGQ5NDM3MWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAK
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
OgorCiAyMDIxLTExLTIxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQgY29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9y
eSBpbnRvIGEgU2hhcmVkQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNTAx
ZDUwMWFiMzgwMTdmMWQ4ZjllODFjOWJlZmRjMmQ3ZjZmMTZmZS4uZjM1MjlkZWI3MmYxZWY1ZGQ3
ZTE4NDg5YjA0YWJkYWU0ZTQzNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFy
Oi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVu
Y29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMS0yNCAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGVyIHNob3VsZCBiZSBh
YmxlIHRvIGNoZWNrIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncyBmb3IgY29uc2lzdGVuY3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIx
Mzk2OTY2YmI2MGFjLi41Mjk0OTMxOTgyOGU0ZTE1NjM4MmI5MzdhZjliYzJjYTVlYmU0MWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTEtMjUg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlz
aCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3Vh
cmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoK
KyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAg
ICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNv
dXJjZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3
NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhk
NmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAg
ICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEp
OwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8
U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgw
OWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICht
X21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUlt
YWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQg
PSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0
YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5
MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9
PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
aWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250
ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdl
XSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNl
bnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIx
YTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVp
bnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShm
b3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
ewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCmluZGV4IDkwOThlMDVhZjRjODQzM2IzZDEzYjM5NTY1MDY0YTljMTU0MzM4N2Qu
LjZiOTEzZTQ3MDNmMDEzYzEzY2U3YTYyMGJhMDhlYWM5YzUzNjExMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0zMDAsMTMgKzMwMCwxMyBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJl
c3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9u
LCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtl
Q29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAK
LXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVz
cG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHku
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRh
YmxlIHsKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VE
YXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAg
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgp
LCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0
dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBET01DYWNoZTo6
cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERP
TVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAg
ICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
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
IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3
NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
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
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJh
bXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAog
ICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFz
ZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVm
ZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3
MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNj
ZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNG
b3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAK
ICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0g
V1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhi
NzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwg
dHlwZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAg
LTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
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
dC5jcHAKaW5kZXggYWU3YjJlMmZjYTBkMzdhYTUzOTk5ZmE2Mjg0YTQ1OWE0ZTQ3MzFhYy4uYmVm
NGQyZDdhYzdlZWNkOTE3YzFmNjQzYTUyN2U1ZDY3NzYyNDg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAg
ICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1f
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25O
dWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5k
ZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4
YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2Up
CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2Rl
bEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1
MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMx
NjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpT
Qzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGlu
Zy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBp
bXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0o
c3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRk
MDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAy
YjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29u
dGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9j
b250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9j
b250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2Nv
bnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAg
ICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpA
QCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxl
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
Y29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1
NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
IW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0Zv
bnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBv
dGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAo
bV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRl
U291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGlu
Zyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJk
ZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxl
Y3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VF
bGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywg
dG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1
ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0
byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dl
bmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1t
ZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5m
YTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
ZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIy
OGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBE
YXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENv
bW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJ
bWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0
YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJs
ZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAg
ICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1
dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1
Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5
OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmll
cjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5k
ZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1
NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250Owog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0
cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0
cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVs
ZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVk
aXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxl
bWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRh
ID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBv
dXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91
dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsx
NTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRh
JiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJD
b250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9k
b2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8v
IEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBh
bHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
IGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2li
bGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4
ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjVi
MTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRh
Y2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewog
ICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsK
LSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVu
YW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAg
LTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAg
ICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTli
MzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4
MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFs
dWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVt
ZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZp
bGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0
Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVB
c0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1
cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQog
CiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5k
QXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxh
Y2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1l
Q29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFy
a3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVu
dCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDli
Nzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2
b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBp
bWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rp
b24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2Vw
YXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGlu
IFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBz
ZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNm
M2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJp
bmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXpl
U3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkp
LCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGly
ZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAs
ICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6Omxv
YWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
dGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVu
dCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3Rv
cmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFy
c2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBv
bmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQg
YW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5
ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1
ZjRmMTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmICht
X2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBt
X2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0
YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAK
ICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMx
Nzk3NGYyNzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
M2RhZmU2NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4
MTMyZDM3ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
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
aW5kZXggYzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFi
ZTViYTQ5MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1
ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBS
ZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3Vy
Y2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBj
N2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxv
YWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2Ew
NjRiYzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMy
MDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNr
aW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlm
YWRmN2I3NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVm
ZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5
LDcgKzMxNDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNs
eShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZp
ZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5
MGEwZTE1MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhi
MGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
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
cHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0
ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3
b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291
bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9u
cy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3Mg
JiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
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
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li45Njk2ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhl
Y3V0ZUNvbW1hbmQoKSkgewpAQCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFn
ZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1u
SW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAg
ICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNo
ZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5m
NWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
OTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRh
dGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRh
dGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
RGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8v
IFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJj
ZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNl
KSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAg
ICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgp
KTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUs
MTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90
IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1
dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAm
JiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBl
SUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJl
c291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBj
cmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJl
c3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhKQogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0
KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImIGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkg
IT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChw
bGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcg
QEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291
cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlm
ICghbWFpblJlc291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5v
dCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpA
QCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3Bv
bnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRv
IGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZy
b21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNl
dCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRo
ZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRv
CiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFt
ZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjcz
MzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5
ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsy
MDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRh
LmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEu
YXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBo
ZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgog
ICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmly
ZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQu
LjY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKQEAgLTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lk
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
NTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYw
MWQ4ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25z
dCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50
IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0Owog
CiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNo
ZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Cisg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAt
OTksMTEgKzk5LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQg
aXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0
byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2Yw
NDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9u
dDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1
LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25z
dAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQog
Ci1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAh
ZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wg
d3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0
ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7
ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5n
ID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVm
ZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0
aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250Ojpj
aGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+
Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDli
ZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVk
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0
Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBw
bGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBm
ZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFy
SW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAg
ICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdl
OjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVw
ZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFn
ZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAg
ICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBk
YXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0
UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYz
MWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2Ix
MjgzNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQg
ZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4
ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAw
OTFlOThmOTkyNGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAg
IHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3
LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmlu
Z1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
OwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewot
ICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3Jl
bWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAg
ICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRh
dGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDhiODNlNTMzMTkwYTc3NmJhOGY0MGMyODMxNThjZGI3NjFhZTk3MDIu
LmExMDVlMmI0YzdkNzU0ZTE5Yjc1NWE5Y2FjNTc0YmU4Mjg3YWVhODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTA2LDcgKzkwNiw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZm
ZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyMCw4ICs5MjAs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVm
ZmVyKTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAz
NWJjMjc4Li5jY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIx
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
ZjJjODM5Li5kZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRo
ZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAg
IG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJl
c3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEv
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
ZTQxOGYxN2I2NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDgg
Kzk4LDEzIEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVj
NGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3
MTlhMmEzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwCkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRy
YWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBj
Li5jMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02
MywxMCArNjMsMTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2Rj
ODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5
Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1
MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
U2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRl
NzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZj
ZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBA
IC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2
NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1
YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJp
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
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXgg
MWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2Vk
Nzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBl
czsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwog
CiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uNWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShm
aWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShw
cm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2
ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRC
dWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVN
b2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5
VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAg
ICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMw
ICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0
IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZp
cmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxp
bmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIx
NTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
KyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJp
bmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFy
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsK
LSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQo
KTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJp
bmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHko
KSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6
aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAg
KzE5MiwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAg
ICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5z
ZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKQEAgLTIxMywyMyArMjAzLDI4IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7
CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsK
ICAgICBtX3NpemUgPSAwOwpAQCAtMjQzLDE3ICsyMzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwog
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
QEAgLTM1NSw4ICszNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJl
ZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7
Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1f
c2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcg
KzM2MSw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25z
dAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7Cisg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAg
IEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1
ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7
CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxl
TW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1h
eVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Cisg
ICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAg
IH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29u
c3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50
OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MzAs
NyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDQxLDcgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgog
Ci1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29k
ZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDk1LDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRv
IHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3
ICs1MTQsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAot
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2Vn
bWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9z
aXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVu
dC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzgsMjEgQEAg
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7Cisg
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
ICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAg
ICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAg
ICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBj
aGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBA
IC01MzQsNyArNTc4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVk
NjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYx
Y2YxY2IwMmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02
MiwxNDYgKzYyLDE0NiBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2Nh
dGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRB
VElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAj
aWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMq
KTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxp
bmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8g
b25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUg
c2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTog
QXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdp
dGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBj
b3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNv
cHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVh
ZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5
QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0g
ICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8g
YSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAg
ICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBV
U0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CisjZW5kaWYKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92
aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgog
I2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
ICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisj
ZW5kaWYKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMjEwLDEwMiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5k
KCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFr
ZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24p
IGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2Vn
bWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3Rv
ciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNz
IGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxB
cmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVk
LCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVz
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzMxNSwy
MSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJj
OTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0
KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNB
cnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29y
ay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMy
M2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXko
KQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUu
LmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0
MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24g
YWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9u
LgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2
YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3
ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMp
Ci1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXIm
IHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0Jp
dG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1h
Z2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVz
OkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlm
CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlw
ZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgz
OGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
QEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
IEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bv
c2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZv
aWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdl
YkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9j
YXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZE
YXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwog
ICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNv
dXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQog
Ci1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBh
bGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2Uy
MmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2Jm
ZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1
ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEz
OCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5p
c0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2
LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50
IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBp
bml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRh
dGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3
IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgog
ICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMg
dGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0
aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5
SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXgg
N2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2Jm
OTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5
LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVy
IDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJT
aXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNv
ZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQz
NWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThj
YjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fz
c2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZt
X3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9n
ZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1
NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMx
NDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+
S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3
ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1Jl
ZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8
R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewog
ICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVz
X25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9
LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0
ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdp
biwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmln
aW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRp
ZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250Ojpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250
OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7
CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmVi
YmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVl
MzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxp
dHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpO
bywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxs
b3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0
aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6
OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRl
Y2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAg
aW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlz
IGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3Vs
ZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsK
IAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9u
RGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5n
IGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1l
bW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZj
MjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVs
PiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChX
VEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1v
ZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3Ry
aW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5
ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQx
NGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Rl
bCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmlu
ZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
LCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9t
aW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQ
dHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZN
b3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4
MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXpl
KCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQog
ewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWlu
dDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3
NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNp
emVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
CiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsy
ODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXpl
OwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRv
U2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAg
ICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1
NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5
OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlz
V09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
KTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBv
ciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29u
dmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdy
aXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUg
Y3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRz
LCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdh
cyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUg
c2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUx
MTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAy
OGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpT
T04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0i
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
aW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5
YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpT
T05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03
MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxO
U0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
a2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhB
VkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0
YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBz
c2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFX
aXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25z
Ok5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBA
IC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBl
eHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0
byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwot
ICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lv
bnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGly
ZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBA
IC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAg
ICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpw
YXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9i
bGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250
ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkz
NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRh
KiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5
YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURz
LmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtl
eVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEg
PSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVy
Q2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47
CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmly
c3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhr
ZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmco
InBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXls
b2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3Qo
V1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RG
TW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJs
ZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7
CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRm
M2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsK
IAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVy
LmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNs
eUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFh
OTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3
IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
KCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYg
c2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBB
cHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFr
ZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFn
cyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVu
ZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJl
YW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1
ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJk
YTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9w
YXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1
ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVl
c3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
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
ZXggZjE2MDcxNWJkYTc3NTk4OTAxMzM2YjYzYzk1NjdjMDMyNTBiZDI1Ny4uOTQ0YzcxZTcwNzNl
NTY5MWFjZjU4NzIyMDQ3YTkxYmM3M2QwODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5s
aW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwg
Z3VpbnQgbWljcm8pCiB7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgICAgICB1bm1h
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
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmYTcwOWZlYTUxNmYzNTg1ZmMyMjE3MmI1ZGIw
ZmViZTlhZGI3NjgxLi5jMDdmYjU2OTg1OGUwNDhjYmEzODA4MzhiYzFlMzEzOTFkYjIyOTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzY3Myw3ICszNjczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRp
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
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFhZjA0YTc5ZWRk
NzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBT
dHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAg
IDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJ
Zk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENl
bmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBi
ZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0
MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZv
bnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlv
biwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNy
ZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2Jh
YWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1X
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4
OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMx
OTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZE
b2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4
OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYy
ZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3Ry
dWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3Qg
Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQn
cy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZh
cmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0
IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2Fs
IGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQx
Nl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZi
MDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNm
MzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5U
eXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBV
U0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIz
NjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElE
OwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBj
aDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkg
PDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
CiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
OyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90
Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292
ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
IHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBn
bHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292
ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2Yjdl
ZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZm
MWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8v
IGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMg
dGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUg
c2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9
IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsy
NjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQg
YW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9u
dE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250
TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXgg
MDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZh
MGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBA
IC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5V
U2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsK
IGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDgg
KzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07
CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVu
YW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVj
dG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5
ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlv
blN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNl
dCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVy
YWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xl
U3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJr
RmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28g
b2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1
dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJs
ZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
bG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExv
b2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9v
a3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZl
YXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3Vu
dDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wg
Z2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3Vu
dF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVz
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFn
IHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRl
eCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAt
MjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZv
ciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAg
aWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1
cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5U
eXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVj
dCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3Jp
cHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNj
cmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVy
LCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxl
PihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2Ny
aXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBp
ZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRM
aXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9
Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVy
LCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBs
b29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFu
Z1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3Jp
cHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMt
PmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpU
YWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExh
bmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVh
dHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBn
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRG
ZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpA
QCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0
aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhl
YVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAg
aWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRy
aWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2Fk
IHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9y
dCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBj
b25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8
T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcp
OworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChn
c3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0
aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFh
MzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVG
b250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUo
KTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIs
IGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMz
NDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1
OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEz
IEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBj
cmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNj
MWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2Zm
MjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7
CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBm
b250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1
MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBj
YzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBA
IC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9
PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdh
NDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxh
dGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQg
c2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsK
ICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdCho
ZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUs
IDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJP
UikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQg
cmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBz
aXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTEx
MDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0
MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2Uo
Ym9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxh
Y2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21h
cnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVk
QnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9
CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdl
dCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3Rv
bURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVs
bHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5T
bWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9t
RGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIw
OTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9y
ZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5j
b3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisg
ICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5
UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXRE
YXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5
MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3
ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3
IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIp
CiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtl
ciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewpA
QCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAg
IHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcg
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
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQx
YmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5
OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNv
bG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVh
ZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRp
b25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlm
IChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0
ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAg
IGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRl
eHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4
dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNi
Y2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2
Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJD
b250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5n
XTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAog
ICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAz
OGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2
YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0
YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZp
bGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwog
ewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChO
U0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRl
TlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAt
Mjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0
ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFz
dGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRh
ID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURh
dGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
ICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNo
YW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlN
RVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkK
ICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5T
UGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVt
KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChO
U0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5z
RGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1
dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZj
ODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMz
ZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5C
eXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIw
NzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1
MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9i
UmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNv
ZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25z
dDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJl
YW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fs
d2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4
OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4
ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5k
bGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0
MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDky
N2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5
LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3Nl
bGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7
IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBk
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3Vu
dE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0
ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRh
NzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNj
NDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0
aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgp
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3
ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8v
IFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikp
KTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIz
NCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAg
ICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRj
aCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5v
dCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFs
TWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1h
dGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRp
YWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0
Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVy
KSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
Ym91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91
bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCAr
IG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5k
YXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYy
NGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93
bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAog
ICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6
Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2Fl
ZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVk
QnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1
ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBj
NTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFk
ZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYg
KGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9j
ayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJl
ZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAg
RFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsK
LSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRl
ZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAg
Q2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2Nl
ZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2
N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVz
VG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9y
ID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAg
ICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1
ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9
PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0
TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3Io
KSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBl
NWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAg
IGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0g
U3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250
YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9j
a0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3
IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+
c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAg
IGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAi
dmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3Bv
bnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0
b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2Ut
PnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhT
dHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUw
YWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0
YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAg
ICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRp
Z3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAg
ICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0Rh
dGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBt
X2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0ZGE5Y2MwMWE2YzZmM2JmYjBhMjgzM2M5
ZDVlMzRkNzUxYWYyNzg5Li4xYzBiNTc4YTBhMDQxMTlmMjJiYTY5ZjJmMDkyMmYzMmYzMmUyNjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMg
dm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxG
ZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgp
OwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZv
cm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBj
bGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+
ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3
MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNh
c2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hv
dWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9y
YWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRl
eCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0
ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRy
IGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlm
IChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIy
YTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3
N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3Bl
bkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7
CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAg
ICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3
MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFi
ZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBA
QCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91Ymxl
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwg
YXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8g
ZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYz
MzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9u
c2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNz
Pjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
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
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3ZDc0
MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJl
c3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAg
IGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
LT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1f
aW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5
dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5k
ZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYx
NDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkw
MjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYx
ZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVy
Q29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
LSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVm
ZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXIt
PmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6
IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2Ez
ZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBA
QCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFT
aXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0
YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25z
dCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNm
NTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5j
b2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3Rh
dGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5
YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAg
LTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFy
Y2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNl
IGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZl
ZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRl
Y28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2Vj
dXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1
c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9u
dEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUlu
Q29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQz
NmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxp
c3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRM
ZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcx
NDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJj
ODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRh
dGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiBy
ZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3Vy
Y2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVl
ZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzEx
NjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFu
ZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8
U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIo
KTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgx
MDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUz
M2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFy
ZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIw
OCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRp
YyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwog
ICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEs
MTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNB
bmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6
ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFT
aXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRh
LmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBk
YXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNp
emU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVz
cG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJv
ZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZm
ZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxs
KCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUp
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpv
cHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVj
b2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTEx
ZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBD
dXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMw
N2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYw
MGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxT
ZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNl
dEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rp
b24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwog
ICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0
NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlm
YzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6
b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBj
cmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZh
bHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIz
NGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFi
MDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5
M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRh
NjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JK
Q19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2lu
Z0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAg
IGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0lt
YWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQx
OTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlk
MTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQot
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVu
Y3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUx
NTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25z
dAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwog
CkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICgh
c2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsK
IH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3
YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2Yzgy
MTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVB
cHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAg
aWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUo
KTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFs
bG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFk
b3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdo
dC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3Jl
QXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3
R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNv
cmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYw
OTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQz
ZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9w
VGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0
YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byog
Y3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRh
LCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVj
dGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRh
dGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURh
dGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcy
NWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIz
Miw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
NTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0
OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRh
LT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9z
eW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsK
IAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNi
YjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIx
NDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpS
b3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hv
d0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBh
MThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYx
NjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAog
ICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGli
cmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCks
IG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1NWViMWE3MmIx
MGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNm
N2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVy
CiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2Fy
ZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRh
dGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5LDcgKzY1OTks
NyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApA
QCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rp
b25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJD
b3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmls
ZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyop
V0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUg
Y3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAg
ICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURh
dGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYg
X3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91
bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
aW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVmYjll
MDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThk
YjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsy
MjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJi
Li4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGll
czsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJh
Z21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNl
OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4Nzli
ZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUx
MzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYz
NCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nl
c3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6
d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkg
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBh
c3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkg
ewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAg
ICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMw
MTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEz
MTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAg
bV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRl
SGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewog
ICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVu
ZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXkt
PmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRl
bS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkz
YzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEz
NDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwg
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0
aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3
YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFz
ZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAv
LyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBz
aGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VT
aGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9B
UEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFt
ZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJk
OTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVG
aWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNv
dXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRm
MGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0
OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0
OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBk
YXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJ
S0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAg
ICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1n
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
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
ZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
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
Q2hhbmdlTG9nCmluZGV4IGJlNDg0NzE3ZDRhYjQzN2JlZTY4NjdmMzM4MDg3NGE3YjdjYWZlNzQu
LjNhYTdkNDJhYjdlNGJkOWEzMzY4ZjMwZDcyOGI2OWU1NTc0N2MzOGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjEtMTEtMzAgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWRkIEV4dGVuc2lvblRhYkFjdGl2YXRpb24gZGlhZ25vc3RpYyBldmVudApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRl
eCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4xYjczNjNhODI3MjVj
NzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDM4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJu
b3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJu
b3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJp
bmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5z
aXplKCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVh
ckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBB
U1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAt
MTU5LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VS
VF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVu
Z3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+
ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VS
VF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9u
ZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBj
bG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3Qg
Y2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsg
J2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycs
ICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFi
Y2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBh
dXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwot
ICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZl
cihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2gu
ZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdo
MS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgi
KTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAg
ICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBj
aGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAg
Y2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VR
KGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdo
MS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgp
LCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsyMTQsMTUgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0
N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4
ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQ
YXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRo
KCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445704</attachid>
            <date>2021-12-02 04:06:29 -0800</date>
            <delta_ts>2021-12-03 16:55:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211202230627.patch</filename>
            <type>text/plain</type>
            <size>406500</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyYmViMDM3Y2Q2MTZm
NDU4NTVhNzFmNmE3OTBlOTFjZGNlNDk4NC4uYjA5ZjUyMDk1NDIyMTZmOGJhMzY3NzkxMmFhMTg1
OGFmM2EyM2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDNkYWUzNDBmNTI4NDhhYjkzODZiZWE3NDJlYTJkMjU0N2I1NzlmZjkuLjY2NGZkZmMzNDQy
OGIxMzM1OTU3ZTNjZjIwZDhiNDY0MzI1Yjc3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM1IEBA
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
KToKKwogMjAyMS0xMi0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ZTVkOTk1OGM2NTJhNWFmM2Y3ODVjMDViNTUwNDIzYWJm
ZTEwYTMuLjhjMzgzMmU0Y2QwYWIzZTUzMWE2MDcyYTViZjcxMTgyYzA4ZDRmODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0yNSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRp
Z3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUg
aW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
OgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVu
dFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChj
cmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgor
ICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dl
YlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6
CisKIDIwMjEtMTItMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWdyZXNzaW9uKHIyODM5MTIpIEJyb2tlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIFN3
aWZ0IGJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggY2FkNjFhNzdhMDEw
Y2RkODcwZjBhNWM2N2QyMTM5Njk2NmJiNjBhYy4uNTI5NDkzMTk4MjhlNGUxNTYzODJiOTM3YWY5
YmMyY2E1ZWJlNDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1l
bW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6Cisg
ICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlT
dHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6
OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRh
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdl
YlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6Cisg
ICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFVzZSBPYmplY3RJZGVudGlm
aWVyIGZvciBBWElECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJi
MTYwYTA3ODA0YTEzMjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Piht
X2RhdGEpKSB7CiAgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3
YTNhNDQxMDAuLjU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAg
ICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3Ro
IH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5m
NDEwYWFiMTUxN2UzOTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bv
c2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byBy
ZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVz
ZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5H
IHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgz
YTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZm
ODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2lu
ZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9k
eSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQg
PSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAg
fSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJi
OTBkZDdmMDA3MWQ0MjRjLi42ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEz
ICszMDEsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBp
bmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9k
eShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAg
ICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNw
b25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAK
LXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNw
b25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVz
cG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHku
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRh
YmxlIHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VE
YXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAg
RE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9
IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgp
LCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0
dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6
cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERP
TVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAg
ICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
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
IDJmZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3
NGI1MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
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
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29k
ZSh0ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJh
bXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAog
ICAgIGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFz
ZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVm
ZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3
MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNj
ZTgyODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNG
b3JtRGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAK
ICAgICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0g
V1RGTW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhi
NzlmZjYyYjNiLi4xMjZiNTM4NDhhOTkwOWRjNzI0MDk3MWI0NDc2ZGUwYmUwZTBiNmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwg
dHlwZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAg
LTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uYjkzNDM5MmE5MDNk
NGE1ZmQxYzU0YWU4MTQ4YjJlNmU3OWU3NmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNo
dW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Bh
biBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVX
aXRoUGFkZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLnNldEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAg
ICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0Jv
ZHlOdWxsKCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9k
eSgpLmNvbnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZk
YjY2NzVlOGE0ZDEzNjViZjVhNWJiLi4zNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2Ex
YjVlZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
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
dC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uNzVk
ZWFkM2I5NjBiYTliYzUyYWNjNzIxZThhOTFjYjg0MjBhNjZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAg
ICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1f
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25O
dWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRl
cmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5k
ZXggM2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4
YTY2Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2Up
CiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2Rl
bEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCks
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1
MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMx
NjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpT
Qzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGlu
Zy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBp
bXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0o
c3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRk
MDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAy
YjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29u
dGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9j
b250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9j
b250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwog
ICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2Nv
bnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAg
ICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpA
QCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZl
ciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxl
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
Y29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1
NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
IW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0Zv
bnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBv
dGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1
bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250
RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAo
bV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRl
U291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRG
b250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGlu
Zyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJk
ZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxl
Y3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VF
bGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywg
dG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1
ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0
byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dl
bmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1t
ZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li5m
YTE0NjdkYjhlZDg3Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQo
ZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIy
OGI5MWMuLmY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJhYjlhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNl
OwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBE
YXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENv
bW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNTM2LDcgKzUzNyw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJ
bWFnZXMoKSBjb25zdDsKQEAgLTU3Myw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywg
VmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4m
IG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0
YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MTgsMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJs
ZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAg
ICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1
dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggZjMwMjgyMzU2OTAwNmY1
Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNi4uMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5
OThmN2U3NjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmll
cjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5k
ZXggYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1
NWYxZmE4NTI1Mjc4ODE4NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250Owog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0
cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVy
cm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0
cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFz
dGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVs
ZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVk
aXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxl
bWVudCwgVmVjdG9yPFN0cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRh
ID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBv
dXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91
dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBvdXREYXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsx
NTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRh
JiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJD
b250ZW50KFdURk1vdmUod2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAg
IGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9k
b2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8v
IEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBh
bHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
IGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2li
bGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZy
b21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4
ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4zYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjVi
MTVjNDJiMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRh
Y2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewog
ICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsK
LSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVu
YW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAg
LTIzMjMsNyArMjMyMyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAg
ICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTli
MzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4
MTY3OWY5ZjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFs
dWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVt
ZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZp
bGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92
ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRh
dGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQo
eyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52
YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDQyLDcgKzQ0
Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVB
c0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
TWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1
cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQog
CiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5k
QXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxh
Y2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1l
Q29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5z
aXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwo
KSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFy
a3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVu
dCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKTsKIApAQCAtNjE3LDcgKzYxNyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYzMCw3ICs2MzAsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlm
ICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQppbmRleCAyZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDli
Nzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2
b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKFN0cmluZygpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUlu
V2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBp
bWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rp
b24gaXMgYXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2Vw
YXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGlu
IFdlYktpdDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBz
ZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2ZGNm
M2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJp
bmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXpl
U3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkp
LCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGly
ZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhGVFAs
ICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6Omxv
YWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
dGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVu
dCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3Rv
cmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQgcGFy
c2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVudCBv
bmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQg
YW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNjc3YzViODEyZDRmMDQ3MjI5
ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uZDcwYmE5ZWZmMWM5MmE4ZDMwM2YyZWU0NzhmNWQ0Njg1
ZjRmMTg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKIAogICAgIGlmICht
X2RlY29kZXIpIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICBt
X2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0
YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAK
ICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLmQxNWNiNGI4NTE3ODY3YzM0OGMx
Nzk3NGYyNzE1NzQ2NTU5ZGE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
M2RhZmU2NDM3ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uNWNkOThmMzMyMDgyMmI4
MTMyZDM3ZTAwM2VlNDBhODdlMDZmMzM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
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
aW5kZXggYzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uNmZlYjhmNWFi
ZTViYTQ5MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJl
c291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRM
b2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKICAg
ICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZh
bHNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURh
dGEtPnNpemUoKSk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uN2NmMzA1
ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmKTsKICAgICBS
ZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNl
ZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFJlZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9w
YXJzZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3Vy
Y2VzQ2xpZW50S25vd3NBYm91dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRmZDI4MTg0Mzc2ZDRiNzBj
N2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2MzUyZjI4MTQwNjhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIGxv
YWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggM2Ew
NjRiYzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgwZjIyYWJlMzU1ZDEwOWMy
MDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlcXVlc3RD
YW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNr
aW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2ZjNjU3Yi4uNjMwOTliNDlm
YWRmN2I3NTQ3NmI3OWFhN2IwMTQ2ZTMwNzc0NjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0zMTAxLDcgKzMxMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVm
ZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
bGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBB
U1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBAIC0zMTQ5
LDcgKzMxNDksNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hyb25vdXNs
eShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlkZW50aWZp
ZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAgICAgICAg
ICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJl
c291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4NmUxNGY0ZmU4ZmQ3ZGY5
MGEwZTE1MWYwOTM0MThkZGRiMS4uYTUyZDdmOTFjNjI2MjFmZDM3YzEwYmYwYTlhMDFmYWZiNjhi
MGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
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
cHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uOTA2ZDY0
ZjUxZmIyYjc4ODA1ZTBiZjJjN2JkNTAyOTEwZmU0ZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3
b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291
bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9u
cy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3Mg
JiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywg
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxl
bmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNi
OWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIy
ZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBk
YXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
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
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUy
MGJkMzBlNjM2NTk1Li45Njk2ZGUxNzZkMTU5YjEwNzY0YmVjMzUyNDNlZGRmY2NhYzBmZTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhl
Y3V0ZUNvbW1hbmQoKSkgewpAQCAtMTExMyw3ICsxMTEzLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9u
Q2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFn
ZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1u
SW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAg
ICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1l
bnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNo
ZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi5m
NWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAt
OTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRh
dGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRh
dGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
RGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8v
IFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJj
ZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNl
KSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAg
ICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgp
KTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUs
MTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90
IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1
dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVz
cG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAm
JiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBl
SUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJl
c291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBj
cmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJl
c3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI1NiwxNSArMjU2LDE1IEBAIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhKQogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0
KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImIGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkg
IT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChw
bGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcg
QEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291
cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlm
ICghbWFpblJlc291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5v
dCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpA
QCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3Bv
bnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRv
IGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZy
b21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNl
dCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRo
ZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRv
CiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFt
ZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAxNWUuLjcz
MzZiMzdkZTNiZGRkYTZmYTNkZjk2MzJmOWI2YzMxZDQyYzUzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTE5Myw5
ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDb250ZW50ID0gY29udGVudC0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3Ig
TUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDE3ICsy
MDUsMTcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVv
dGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0
YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRh
LmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEu
YXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBo
ZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgog
ICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmly
ZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQu
LjY2MWE5OWFlNTc2YTJiOTA4ZGNhMDk2NjQ0NGJiMGFkNWZiMTNiNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKQEAgLTQyLDEwICs0MiwxNCBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogCiB2b2lk
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXgg
NTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uNjZkM2VhYzViNWRjYzYw
MWQ4ZTAxNjcyNzI3NjdlNTNmYTJmOGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25z
dCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50
IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVkU2hlZXRUZXh0Owog
CiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNo
ZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAgIHJldHVybiBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Cisg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQpAQCAt
OTksMTEgKzk5LDE1IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQg
aXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0
byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmY2NDMzM2Yw
NDMzNmIzNmM2MTA3YTQ2MzBjMDI0MTdlNDg0YTI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY2LDggKzY2LDEzIEBAIHZvaWQgQ2FjaGVkRm9u
dDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAKIHZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkwLDcgKzk1
LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25z
dAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQog
Ci1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAh
ZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wg
d3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0
ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7
ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5n
ID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1cm4gYnVm
ZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0
aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRGb250Ojpj
aGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRp
bmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNsaWVudC0+
Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4wYjdlZDli
ZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVk
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0
Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBw
bGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBm
ZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uNzJjMTlmNjU3YmQ0NzdjMTNhOThkMDFkYjgw
ZWZjMDU3MGFkYzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFy
SW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAg
ICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdl
OjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVw
ZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZl
ciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFn
ZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAg
ICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBk
YXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFp
c1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0
UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYz
MWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uNWMzNmY5MDgzOTYzMmY3OTk0OWY0MjJhNDhhYjg3M2Ix
MjgzNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQg
ZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4
ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgzOTU2MmYuLjg3MzFlYjgyY2I4ZWYwMWFkM2IxNDdkOTAw
OTFlOThmOTkyNGJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1
b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwogICAg
IHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTEwNywxMiArMTA3
LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmlu
Z1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
OwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewot
ICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3Jl
bWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAg
ICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRh
dGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIu
LmRlNzhhY2IyMjEwYTFmZjRlZmE5NmMwNWY4NDkxOWIyNjVkMDFjYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtOTEzLDcgKzkxMyw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKCkKIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBuZXdCdWZm
ZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTkyNyw4ICs5Mjcs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVm
ZmVyKTsKKyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAz
NWJjMjc4Li5jY2U1ODAxYWVjN2ZjNzc4ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIx
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
ZjJjODM5Li5kZTU3ZjQwNDAzNzI0YzUzNmJhOTdiMmI2YTA2MmVjYWY2NzQ2MTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRo
ZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAg
IG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJl
c3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEv
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
ZTQxOGYxN2I2NS4uZWVkYjZiMzdlNDIyMWI4Zjk4MjY5NGViMDk2YTAyOWZkMWI4MWU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk4LDgg
Kzk4LDEzIEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAKIHZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVj
NGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLmFiMTcxMTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3
MTlhMmEzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwCkBAIC00Myw3ICs0Myw3IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRy
YWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBj
Li5jMTcwZTYwNDNmNDlkY2EwMjU5YTYzZmMyNWQ4NTJkYTZiMTFmZDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02
MywxMCArNjMsMTQgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29u
c3QKIAogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggY2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1Yy4uZDAyMGFjM2Rj
ODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGZhNGI5MDNiZWY5
Mzk0ODFjMjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQuLjkzZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1
MmE0ODQwNjlkZjJhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVC
YWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
U2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggODIzNzRl
NzI2MmM3MGVhOWRmZTRkNjRmMjVhYjEzNWFhNjAzMzNjZi4uYTM2M2I3YjAyY2IzYzk3N2Q1NWZj
ZGZjY2NiYTQzMWQzNTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBA
IC05Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5n
UmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2
NTM1YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1
YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJp
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
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXgg
MWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2Vk
Nzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBl
czsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwog
CiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uNWUyNWFlM2U0ODExNmFmNDg0MzljM2ZmMjM4ZWViZDQwNWU1YWM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShm
aWxlRGF0YSkpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShw
cm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKQEAgLTY0LDYgKzY0LDExIEBAIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgYXBwZW5kKFdURk1v
dmUoZGF0YSkpOwogfQogCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
Cit9CisKICNpZiBVU0UoR1NUUkVBTUVSKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKQEAgLTczLDI2
ICs3OCwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRC
dWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVN
b2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKLXsKLSAgICBpZiAobWF5
VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAg
ICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwpAQCAtMTAzLDMw
ICs5MiwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0
IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZp
cmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxp
bmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIx
NTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
KyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJp
bmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFy
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsK
LSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQo
KTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMTgxLDYgKzE1NiwyMSBAQCBTdHJp
bmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHko
KSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6
aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCiBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CkBAIC0yMDIsMTAg
KzE5MiwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAg
ICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5z
ZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKQEAgLTIxMywyMyArMjAzLDI4IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7
CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsK
ICAgICBtX3NpemUgPSAwOwpAQCAtMjQzLDE3ICsyMzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwog
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
QEAgLTM1NSw4ICszNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogCiBib29sIFNoYXJl
ZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7
Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1f
c2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzcyLDcg
KzM2MSw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25z
dAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7Cisg
ICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAg
IEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1
ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7
CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxl
TW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1h
eVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Cisg
ICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAg
IH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29u
c3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitjb25zdCB1aW50
OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKQEAgLTM5MSw3ICs0MzAs
NyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CkBAIC00MDIsNyArNDQxLDcgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIH0KICNlbmRpZgog
Ci1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29k
ZXIoKSBjb25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CkBAIC00NTYsNyArNDk1LDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRv
IHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3
ICs1MTQsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAot
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2Vn
bWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9z
aXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVu
dC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDE2ICs1MzgsMjEgQEAg
Y29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJl
dHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsKK30KKworUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7Cisg
ICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
ICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAg
ICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAg
ICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBj
aGFyYWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBA
IC01MzQsNyArNTc4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVk
NjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjU5ZjBjYTJjNDZjMDMyMjA4YjY3ODgzMWMyNDYx
Y2YxY2IwMmMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02
MiwxNDYgKzYyLDE0NiBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2Nh
dGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KLQotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
eworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRB
VElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3Jl
YXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShD
RkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAj
aWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMq
KTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQog
I2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxp
bmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8g
b25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUg
c2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTog
QXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdp
dGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBj
b3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNv
cHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVh
ZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5
QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0g
ICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8g
YSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAg
ICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248
Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7
CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlk
ZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBi
ZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3Rz
LgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBE
YXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAg
ICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlm
Ci0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0KLSAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAg
IEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxz
aXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQor
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBV
U0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBE
YXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNl
bmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CisjZW5kaWYKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZm
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92
aWRlcikpKTsgfQorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgog
I2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNl
bmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
ICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJ
T04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisj
aWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Cisj
ZW5kaWYKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMjEwLDEwMiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5k
KCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFr
ZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24p
IGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2Vn
bWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0Uo
R1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRP
d25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZv
aWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29t
YmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVj
dG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3Rv
ciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNz
IGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxB
cmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3QgY2Fs
bCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8vIFdo
ZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBkZWxl
dGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVk
LCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVz
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjgsMjEgKzMxNSwy
MSBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsK
KyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJj
OTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0
KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNB
cnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29y
ay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMy
M2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXko
KQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUu
LmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYTEyYTc0
MWE1NzAyNTlmYzIyOGE2ZDlhYmJjMzIwZWY3ZjZjOGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24g
YWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9u
LgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAg
IEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2
YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3
ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbQpAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMp
Ci1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXIm
IHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0Jp
dG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1h
Z2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVz
OkB7IH1dOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlm
CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlw
ZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgz
OGE5Yjg1MC4uZjBlMmNhYjdkODAxMzYwMjc2OTM5MjgxOTZhNWZjYTc4MTY3NWE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0K
QEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
IEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDoo
Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bv
c2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZv
aWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdl
YkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk4LDI0ICs5OCwyMiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9j
YXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZE
YXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwog
ICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNv
dXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI0LDcgQEAgUmV0YWluUHRyPE5TQXJy
YXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0pOwogfQog
Ci1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBh
bGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2Uy
MmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5n
IHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2Jm
ZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1
ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEz
OCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5p
c0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9
IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+
ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2
LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50
IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBp
bml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRh
dGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3
IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgog
ICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMg
dGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0
aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5
SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXgg
N2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2Jm
OTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5
LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVy
IDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJT
aXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNv
ZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQz
NWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThj
YjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAg
ICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fz
c2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZt
X3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9n
ZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19n
ZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1
NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMx
NDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+
S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBm
aW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3
ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1Jl
ZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8
R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewog
ICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVz
X25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewot
ICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9
LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5iMTM2MzQ0
ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdp
biwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmln
aW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRp
ZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250Ojpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250PiBGb250
OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250
OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7
CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmVi
YmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVl
MzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxp
dHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpO
bywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxs
b3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0
aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6
OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRl
Y2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAg
aW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlz
IGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3Vs
ZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsK
IAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9u
RGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5n
IGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1l
bW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZj
MjgyMjkyLi41YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVs
PiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChX
VEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1v
ZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCitNb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3Ry
aW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5
ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQx
NGYzMjQxY2UwMDU2YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Rl
bCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmlu
ZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
LCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9t
aW1lVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQ
dHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZN
b3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcuLmEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4
MGI2ZmI5MDU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXpl
KCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQog
ewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAg
aWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUs
NyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWlu
dDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3
NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNp
emVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
CiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsy
ODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXpl
OwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0V09GRlRv
U2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKICAg
ICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDNkNTcwMTA3ZjI4Zjg1
NDQ3NDFlMzQ5NWMwMTYwN2U0ZGU5MDJkNWUuLjc4YWM0YTdhZmZmNGQ0YmVlOWZkMDJjYWJlN2E5
OGYyZmU3ZGRlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1ib29sIGlz
V09GRihTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
KTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52YWxpZCBv
ciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8gaWYgY29u
dmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUgYW5kIHdy
aXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFuZCB0aGUg
Y3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8vIGZvbnRz
LCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHdh
cyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdpbGwgYmUg
c2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUx
MTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li5kN2MwMTNkNTRlM2RlZDA3ODU0OTAy
OGQ1MWQ2ZTAyOGM5NzUwN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIC8vIEpT
T04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0i
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
aW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5
YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpT
T05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03
MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxO
U0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
a2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhB
VkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0
YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBz
c2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFX
aXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25z
Ok5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBA
IC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBl
eHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0
byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwot
ICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lv
bnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGly
ZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBA
IC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAg
ICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpw
YXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9i
bGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250
ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkz
NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRh
KiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5
YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAg
ICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURz
LmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtl
eVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBt
YWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0
KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChO
U0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEg
PSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVy
Q2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47
CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmly
c3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAg
ICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhr
ZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3Ry
aW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmco
InBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXls
b2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3Qo
V1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBh
dXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RG
TW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJs
ZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7
CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRm
M2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJl
ZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsK
IAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVy
LmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNs
eUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogCiB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZl
ZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFs
bERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFh
OTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3
IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
KCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYg
c2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBB
cHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFr
ZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFn
cyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVu
ZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJl
YW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1
ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRjZDA2YTJk
YTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9w
YXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRp
YUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1
ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVl
c3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
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
ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFhZjA0YTc5ZWRk
NzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBT
dHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAg
IDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJ
Zk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENl
bmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBi
ZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0
MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZv
bnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlv
biwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNy
ZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2Jh
YWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1X
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4
OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMx
OTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZE
b2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7Cisg
ICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4
OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYy
ZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3Ry
dWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpN
YXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNz
Q29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3Qg
Z2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFn
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5
UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVu
VHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0
cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlw
ZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQn
cy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZh
cmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhW
YXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3Nl
bWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAg
ICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxH
bHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0
IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29u
c3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0
aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2Fs
IGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiog
bWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQx
Nl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQs
NyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNP
ZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9m
ZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZi
MDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNm
MzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0
MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5U
eXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBV
U0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIz
NjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElE
OwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBj
aDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkg
PDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewog
ICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
CiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5
MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
OyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAg
ICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90
Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292
ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkK
IHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAg
Ym9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBn
bHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0
Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292
ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2Yjdl
ZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZm
MWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0x
OTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8v
IGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMg
dGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUg
c2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9
IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsy
NjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQg
YW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9u
dE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250
TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXgg
MDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZh
MGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBA
IC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5V
U2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsK
IGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDgg
KzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07
CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVu
YW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVj
dG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5
ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlv
blN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNl
dCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVy
YWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xl
U3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJr
RmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28g
b2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1
dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJs
ZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
bG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExv
b2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9v
a3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZl
YXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3Vu
dDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wg
Z2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3Vu
dF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVz
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFn
IHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRl
eCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAt
MjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZv
ciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAg
aWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1
cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5U
eXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVj
dCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3Jp
cHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNj
cmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVy
LCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxl
PihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2Ny
aXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBp
ZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRM
aXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9
Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVy
LCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0
TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25z
dCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBs
b29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFu
Z1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3Jp
cHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMt
PmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpU
YWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExh
bmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVh
dHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBn
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRG
ZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpA
QCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0
aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhl
YVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9w
ZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAg
aWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRy
aWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2Fk
IHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9y
dCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBj
b25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8
T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcp
OworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6
OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlw
ZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChn
c3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0
aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFh
MzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVG
b250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUo
KTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIs
IGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMz
NDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1
OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEz
IEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBj
cmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNj
MWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2Zm
MjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7
CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBm
b250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1
MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBj
YzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBA
IC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9
PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdh
NDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxh
dGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQg
c2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsK
ICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdCho
ZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUs
IDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJP
UikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQg
cmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBz
aXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTEx
MDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0
MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2Uo
Ym9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxh
Y2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21h
cnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVk
QnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9
CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdl
dCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3Rv
bURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVs
bHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5T
bWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9t
RGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIw
OTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9y
ZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5j
b3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisg
ICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5
UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXRE
YXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5
MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3
ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3
IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIp
CiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtl
ciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewpA
QCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAg
IHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcg
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
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQx
YmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlmMWNjMzE5
OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNv
bG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVh
ZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRp
b25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
dGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlm
IChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0
ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAg
IGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRl
eHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4
dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNi
Y2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2
Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJD
b250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5n
XTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAog
ICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAz
OGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2
YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0
YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZp
bGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwog
ewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChO
U0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRl
TlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAt
Mjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0
ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcgQEAgaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFz
dGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRh
ID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURh
dGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
ICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNo
YW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlN
RVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkK
ICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5T
UGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVt
KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmIChO
U0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5z
RGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNy
ZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1
dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZj
ODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMz
ZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5C
eXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIw
NzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1
MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9i
UmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNv
ZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25z
dDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJl
YW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fs
d2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4
OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJkMTk4
ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5k
bGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0
MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDky
N2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5
LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3Nl
bGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7
IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBk
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3Vu
dE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0
ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRh
NzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNj
NDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0
aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgp
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3
ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8v
IFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikp
KTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIz
NCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAg
ICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRj
aCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5v
dCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFs
TWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1h
dGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRp
YWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0
Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVy
KSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
Ym91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91
bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCAr
IG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5k
YXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYy
NGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93
bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAog
ICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6
Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2Fl
ZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVk
QnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1
ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBj
NTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi5jNDYwZjVmYTQwZGRhMjFk
ZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05ODYsOCArOTg2LDggQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYg
KGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9j
ayhtZW1PYmopOwogCkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJl
ZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAg
RFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsK
LSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRl
ZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAg
Q2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2Nl
ZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2
N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVz
VG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9y
ID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAg
ICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1
ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9
PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0
TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3Io
KSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBl
NWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAg
IGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0g
U3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250
YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9j
a0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3
IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+
c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAg
IGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAi
dmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3Bv
bnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0
b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2Ut
PnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhT
dHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUw
YWIzOWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3Rv
bUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0
YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAg
ICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRp
Z3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAg
ICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0Rh
dGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBt
X2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRl
ZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMg
dm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxG
ZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgp
OwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
ewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZv
cm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
fSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBj
bGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+
ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3
MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNh
c2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hv
dWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9y
YWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRl
eCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0
ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRy
IGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlm
IChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIy
YTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3
N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3Bl
bkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7
CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAg
ICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3
MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFi
ZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBA
QCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91Ymxl
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwg
YXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8g
ZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYz
MzZjOC4uYjc3ODkzMmYyODFiNzEyZTAwZmY3YWYyNjZhYTM5YmRkMjAxYzMyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9u
c2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNz
Pjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
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
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3ZDc0
MTcxYWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJl
c3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAg
IGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
LT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1f
aW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5
dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5k
ZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMTE3YmMxN2MzMjYx
NDYyNjZiODgyODEwMWViYzU5M2Y5OTI2ZjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkw
MjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYx
ZTRiZDFhNTFkNjBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKQEAgLTQwLDE3ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVy
Q29weSgpID0gZGVmYXVsdDsKIAogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CiAg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
LSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVm
ZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXIt
PmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6
IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2Ez
ZTY2Y2JhMjdiNjUuLmIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBA
QCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFT
aXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0
YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25z
dCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNm
NTY1MmFiLi43NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5j
b2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3Rh
dGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5
YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAg
LTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFy
Y2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNl
IGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZl
ZGUyOWZjYmEyNDQuLjM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCkBAIC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRl
Y28KICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2Vj
dXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1
c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9u
dEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUlu
Q29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQz
NmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxp
c3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRM
ZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcx
NDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJj
ODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRh
dGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiBy
ZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3Vy
Y2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVl
ZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzEx
NjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFu
ZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8
U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIo
KTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgx
MDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUz
M2YyMmMwMWJjNTgxOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFy
ZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1
ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIw
OCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRp
YyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwog
ICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQo
KSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERh
dGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEs
MTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNB
bmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6
ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFT
aXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRh
LmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBk
YXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNp
emU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVz
cG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJv
ZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZm
ZXIpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxs
KCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUp
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpAQCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpv
cHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVj
b2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTEx
ZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNh
dGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBD
dXJzb3I7CkBAIC03NjEsNiArNzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMw
N2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYw
MGU3OGJhYjAzYTdlODkzOTcxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxT
ZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNl
dEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rp
b24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwog
ICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0
NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlm
YzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6
b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBj
cmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZh
bHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIz
NGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFi
MDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5
M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRh
NjQwOWIzYzQ3YjRkZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JK
Q19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2lu
Z0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAg
IGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0lt
YWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQx
OTJmMTlhYTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlk
MTM1MDQ1OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQot
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVu
Y3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUx
NTNjLi45NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25z
dAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwog
CkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICgh
c2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsK
IH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3
YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0NDUuLjZmYTQxZjM0NGNlNjliMmM2Yzgy
MTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAgLSAodm9pZClfc3RvcmVB
cHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAg
aWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUo
KTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFs
bG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFk
b3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdo
dC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3Jl
QXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3
R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNv
cmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYw
OTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQz
ZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9w
VGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0
YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byog
Y3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRh
LCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVj
dGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRh
dGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURh
dGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcy
NWI3NzBmNmM1NDI2YWM4Y2I3YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIz
Miw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
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
b3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5NjQ2ODkzMmEzM2U5Mi4uZjNh
ZDU3NmIzMzNhOTMyOTUwMDYzZjdhM2E5NGNmNTc3M2I0MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rv
a2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRl
cigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRm
NTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0M2U0
OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9u
VHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRh
LT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsgbV9z
eW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsK
IAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3Is
IFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYwNzNi
YjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYxZDIx
NDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpS
b3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hv
d0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4YjliNDBh
MThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYx
NjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAog
ICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGli
cmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCks
IG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1NWViMWE3MmIx
MGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNm
N2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wpY2Fu
UGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVy
CiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2Fy
ZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRh
dGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5LDcgKzY1OTks
NyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApA
QCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rp
b25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJD
b3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmls
ZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyop
V0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUg
Y3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAg
ICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFyZURh
dGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYg
X3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91
bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
aW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVmYjll
MDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThk
YjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsy
MjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJi
Li4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGll
czsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJh
Z21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNl
OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4Nzli
ZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUx
MzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYz
NCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nl
c3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6
d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkg
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBh
c3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkg
ewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAg
ICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMw
MTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEz
MTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAg
bV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRl
SGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewog
ICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVu
ZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXkt
PmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRl
bS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkz
YzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEz
NDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwg
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0
aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3
YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFz
ZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAv
LyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Ondp
bGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBz
aGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VT
aGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9B
UEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFt
ZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJk
OTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVG
aWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNv
dXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRm
MGIxZGQwMGE0OGIuLmRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0
OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0
OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBk
YXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJ
S0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAg
ICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1n
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
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
ZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
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
Q2hhbmdlTG9nCmluZGV4IDk0NWVhZWI4MjMzMTk4ODczYzI2NDA0MTVhNzgwNjEyYTZiZDg3NDku
Ljc4MDg5NGQwNWY3Njc0ZTMzZDkzNzc3ZjJiMzg0NzBkMGJlYjdmYzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjEtMTItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuIFtHVEtdIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBpbiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJj
OGUyZjYzMjdiMjEyYzdjYTQ2OC4uMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0NTRh
Njc2NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTQzLDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
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+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNs
ZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4Mywx
MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3Vv
dXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGln
dW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClb
c3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUo
IW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Cisg
ICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1OSw3ICsxNjAsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVk
QnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkp
OwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5k
YXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0x
NzUsMzAgKzE3NiwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2En
LCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdn
JywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsK
LSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9Owor
ICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdo
MSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1
dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9
IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAg
ICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6
ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2gi
KTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBj
aGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWpr
bC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEo
KSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZl
ci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEo
KSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCks
IGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgp
KTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hh
clB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAK
QEAgLTIxMCwxNSArMjE0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8p
CiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAg
cmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1
ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2En
LCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAn
YicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2En
fX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAn
YycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycs
ICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7
ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9
KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAu
Ljg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445918</attachid>
            <date>2021-12-03 16:56:00 -0800</date>
            <delta_ts>2021-12-03 20:11:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211204115558.patch</filename>
            <type>text/plain</type>
            <size>408059</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uYmNkYzUyMjc2ZjVjYzAyZTFhZDk2MmFkY2FlNWQ2
ZmM2MzY0MzJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbTVNFXSBGaXggZXJhc2UgcmFuZ2UgdG8gcHJldmVudCBhY2NpZGVudGFs
IGRlbGV0aW9uIGluIGZpbGVzIHdpdGggY2hhbmdpbmcgZHVyYXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2
ZWExZTQwYmI0YjcxNjM1NzUxNDQ1OWViYmZjZDBkYzQ4NWYyOGUuLmQ3ZjVhNWJiMDE3MDMzNDhk
OGVhNGY1MWQ2ODQ0M2E3YmU2YmMwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIx
LTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlz
dGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUg
YW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
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
MjAyMS0xMi0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4
NDMyMjQ5MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYz
NGIyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXBy
ZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6
CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
X3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUu
cmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJj
MWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5
M2FiNmZiNWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
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
NzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1
MTQ5MWY5MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9y
PFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxl
ci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRh
KSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVj
b3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
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
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBA
QCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0g
cmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92
ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2Nk
OWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZv
aWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZl
dGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJp
ZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3
MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZl
ci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYo
KTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0
dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25z
ZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07
CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29u
c3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5n
aW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEz
NDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3
LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hl
ZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9u
cyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0
aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9k
eSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShj
b25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRl
eCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0
NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMu
aHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAt
MTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAg
ICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShr
aWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmlu
ZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJi
Zjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJj
NWE2ZTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGlj
IGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGIpCiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBs
ZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3Rk
OjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwog
fQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJ
ZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgr
K107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRh
dGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0
LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZl
cikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNi
MS4uZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZl
dGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewog
ICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVy
KCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShw
cm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBj
b250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIs
NyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkg
Y29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8
Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1
bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9
IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAg
IGlmIChpc0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRh
dGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAg
ICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9k
eSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
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
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5
ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZk
ZTBiZTBlMGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmlu
ZyYgY28KICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVB
bmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5w
aXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9k
eUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VE
YXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRl
eHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZl
ciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFj
a2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0
YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChUeXBlRXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAg
ICAgcmV0dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
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
MjI0MDliMWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9
IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1p
bWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSht
X2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2Uu
bWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFu
ZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2Qz
Nzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1v
ZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VS
VChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBi
eXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVf
dCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNv
dXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgp
LT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUu
Ljg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0
NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdB
Y3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAgIGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVj
dCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGlsZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNvbXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmpl
Y3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0
NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2
NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3Vz
QnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkp
CisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7
Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0g
ICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFu
ZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1f
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0
U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVm
ZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAg
bV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVm
ZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAg
ICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUy
NjU2MGJhZGQuLjRiNDM5OTU0ZjE5YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250
RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50
KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAg
ICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRl
ZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0
Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1
ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nh
c3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYs
NyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJU
KCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3
cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygp
KSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJj
ZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwg
U3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVl
NWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUz
NjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwog
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBA
IC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBj
bGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdn
ZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHBy
aXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBG
b3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBm
b250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFl
ZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21p
c2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRh
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2
YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZh
MmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVF
ZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBh
c3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhj
bHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRB
dHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0
cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEy
IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxl
Y3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmlu
ZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMg
U3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRl
eCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2
ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAg
IFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0
YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBA
QCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2Jy
aWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0
cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZl
ciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVs
bHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3Zv
aWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFy
Y2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcg
RWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUlu
UlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUy
MzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENv
bnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJM
ICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJy
ZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5t
aW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAh
PSAidGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAw
LDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3Vy
Y2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0
YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZp
bGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJ
bWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0K
IAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYz
MDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgICAgICBTdHJpbmcgY29udGVu
dFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxF
bGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAo
IWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
KyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNl
Tm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRB
cmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAg
IGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50
ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFu
ZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAg
IGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBk
ZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2Fi
bGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
ZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcgKzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcs
NyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBh
dXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmlu
Zy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMy
NjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0
YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2
NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNl
dEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
cmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZh
Y2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBv
ZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhp
cyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmll
dyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQg
dG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNj
YjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSAr
Mjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRP
bmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1l
LCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBG
VFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRU
aW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0
IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0
aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikK
ICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGgg
JXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsy
ODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRl
RG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFy
ZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhN
RTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVu
dCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRl
bXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0
IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2
NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThk
MzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2ln
bmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRl
bnQoKQogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBm
YWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9
IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1
Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAg
ICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5t
aW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5y
ZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNo
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0g
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
KnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcy
Li41Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291
cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3
aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJl
c3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0
dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2Rl
LCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9v
bCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFz
ZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45
NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNl
LmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZl
cigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAK
IHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZl
ZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4
MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lk
IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3Qg
PSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2Vj
dXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCku
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsg
fSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFi
ZjgwZDBiLi42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEg
QEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxB
cmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5S
ZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVz
b3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7
CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUo
KSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YSht
YWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwor
ICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2Uu
ZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyAr
MTY1Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAg
ICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVk
QnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYs
NyArMjI1Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRp
cGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAg
IG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5k
YXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2Nj
YTRjYmYzYzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNz
IEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVz
b3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVy
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBt
X2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBF
TkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJm
ZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVk
NjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
ZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhN
RTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQg
Zm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45
ZTlmMjk0NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAg
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29m
dFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3
ZmM2NTdiLi42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBv
cmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyBy
ZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZl
cnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBG
cmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAg
ICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsK
ICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
b3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIp
OwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBl
cnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVz
cG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMu
ZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1Nj
cmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNT
Y3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNl
Mjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdj
MTBiZjBhOWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApA
QCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdl
OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcs
NyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYp
OwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9u
cyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxv
cHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29u
c3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZy
YW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5
NTE3NmFjMjM1Li45MDZkNjRmNTFmYjJiNzg4MDVlMGJmMmM3YmQ1MDI5MTBmZTRmNTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU3MSw3ICs1NzEsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBj
b21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFj
dGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4K
ICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGlj
eTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0
YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5j
b2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxp
bnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3
ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgs
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkK
ICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsK
KyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1
NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAx
ZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYg
KCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxh
Y2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBw
YXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBp
dCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMy
ODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNl
MjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0
IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcm
IHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0
YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNv
dXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1F
OiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVk
QnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgp
KTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
cmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
IGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEp
CiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNo
b3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkK
QEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRT
eW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBh
IHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBv
ZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2
YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBp
ZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9t
IHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkg
KzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFs
bGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNl
ID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBw
cm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZm
ZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRh
dGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNh
MTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNl
ZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0
LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZh
bGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAg
dm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFk
YzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVz
cG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJl
c3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtl
Q29udGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRk
VHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNk
ZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0
M2VkZGZjY2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0
KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNo
ZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAg
ICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1u
QmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBT
dHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25n
IGxvbmcgc2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFk
NGU0MTY3N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVk
IGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
OwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCku
Z2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1
dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAg
LTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGlu
Y2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlm
ICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURh
dGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2Uo
KSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0
YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VS
ZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxp
c3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVz
cG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNl
UmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAh
PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBD
RlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9
IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3Bv
bnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsy
NTYsMTUgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIp
OwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsK
LSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVD
RkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRy
OwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0
YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkp
OwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0
IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlw
ZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlz
IG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFh
cmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlv
bmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291
cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2Ug
aXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3Vy
Y2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3Vi
ZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0g
Y3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZy
YW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3Vi
ZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUg
c2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1
dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8v
IGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwo
KSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRv
Y3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAK
KwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBj
YW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhh
dmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFy
a3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdp
bmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygp
ICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0
Y2IyZDBiZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAg
IH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRl
bnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5j
b250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6
IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRh
KCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjRE
ZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJh
c2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0g
ICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRp
Z3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5h
cnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgp
KTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUg
VVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29s
dmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNv
bHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQog
ICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29s
dXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMz
ZWExZDRhOWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsK
KyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZm
Li42NmQzZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQo
TUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2Rl
Y29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCBy
ZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5
Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVj
b2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQg
dGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBh
bmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAg
ICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRl
Y29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdh
aW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3
NjMzYWU5NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMg
QEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNs
aWVudCkKIAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
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
NGJlZjQyMTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYs
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZv
bnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRp
b25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBG
b250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
IGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9u
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdi
ZDQ3N2MxM2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBD
YWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAg
ICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9k
YXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBA
IGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGlt
ZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZO
ZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
LSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBk
YXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRf
SU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3Vt
ZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgp
KS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZE
b2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRo
ZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qg
c3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBl
Mzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5
OTQ5ZjQyMmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJ
bWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0
YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
aW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJj
YjhlZjAxYWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVu
Y29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkg
ewpAQCAtMTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRh
QnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0g
ICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OwotICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERh
dGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAg
IGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRy
OwogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJm
NWVkYjI0ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVy
RmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQor
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJu
OwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9Owog
ICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5
MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcy
OTZmZmU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigp
OwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0y
ODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNp
Z25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90
YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYs
NyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNl
Q2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+
IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2
YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQg
YXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFi
ZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNh
ZjY3NDYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQog
ICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3
IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNl
RWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0
ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNl
dENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsK
ICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5k
ZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4
YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNW
R0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkK
IAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0lu
U2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50
LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250
ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5z
YXdFcnJvcigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAg
ICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJl
bW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNv
bnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVk
Rm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZv
bnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdE
b2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgK
aW5kZXggMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUx
NjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
U1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0
Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5h
bFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4
Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZh
MDI5ZmQxYjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRI
YXNoKCkKIAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXgg
MTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1
ZTQxNzg1MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRy
YWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFM
OjpTZXNzaW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGll
bnQ+IHdhbGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBm
NDY3YTI3ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZk
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZW5jb2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRT
aXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSht
ZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVh
NGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
CkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVz
cG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZp
bGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Np
b25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2Fj
aGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
aW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0
ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29u
ZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVm
b3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hl
TW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9u
aXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1N
YXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQg
RGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmls
ZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNl
QmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERp
c2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwg
bV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYz
YjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNw
YWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdk
MDU5YjBlYjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0
NzZlZDk0YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1
Miw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8v
IGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lh
bGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdo
ZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFp
bnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRv
IGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
bV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1f
dXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5k
ZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIz
MDA1MmY3OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJp
YWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3Ry
aW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxl
SGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBk
b2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYg
bm9kZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBV
UkwKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBo
YXMgYmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAg
IFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0
KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1f
cmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5k
bGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAi
dGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgy
LDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2Fj
aGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0p
OwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3
MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3Ry
dWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBl
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNl
cmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXgg
NjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUw
ZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0z
OSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAg
U3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1
Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4u
ZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRl
cigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExv
YWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2Fu
Y2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVm
ZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7
Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1l
OwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5k
YXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxl
cy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAor
CiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdG
aWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsK
ICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29t
cGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApp
bmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0
MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcg
KzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0
cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXks
IFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2Qx
YTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRh
YTA0MzZlZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
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
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0
ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4
NzVmODg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVu
c2lnbmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04
OSw3ICs4OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5j
b2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3Jk
ZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVm
ZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
IH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJz
aXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0x
MjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21E
YXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVj
b2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IDJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2ZWM2NGFj
MzI4N2U2YWJjMDMuLmJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAt
MzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhIHsKQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
dGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgK
aW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMw
ZWRjMWMzZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmlu
Z1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1
YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0
aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRG
aWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2
MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNm
OGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0
ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsK
ICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAy
NDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQz
NjRhZmMyMGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2Fy
ZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBl
czo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFt
ZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90
IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291
bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJi
Li5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudElu
Zm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0
cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRk
aXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5
YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJk
NDA1ZTVhYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTUwLDEzICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHBy
b3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQs
MTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
ICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAg
IDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAj
ZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5n
KQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFw
cGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
ZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmlu
ZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAg
cmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAv
LyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZl
IG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBl
bmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxn
b3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0g
ICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBS
ZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hh
cmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29t
YmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAg
IG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0K
LQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJp
bmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
LSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQog
CiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEs
NiArMTU2LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVm
ZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJl
ZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jv
b2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2Nv
bnRpZ3VvdXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkp
LCAxKTsKQEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3Nl
Z21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVs
ZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1f
c2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NF
UlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1f
c2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6
ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5t
X3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtl
bGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAg
ICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZv
aWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVu
dHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBh
dXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQo
KTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9F
TkFCTEVECkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3Qg
dWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNl
Z21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVu
dCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3Vv
dXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQo
KSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3Vv
dXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVu
dCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1f
c2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1
ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RG
TW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGlu
ZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1h
cHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRh
KCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30K
KworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7
Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBh
dXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9
LApAQCAtMzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1t
dXRhYmxlRGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3
ICs0NDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVy
OjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0
OTUsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtd
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6
ZSgpOyB9LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBz
aXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/
ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00
OTksMTYgKzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJl
dHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVy
biBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAg
ICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2gg
dG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJp
bmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5k
ZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMw
MzIyMDhiNjc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdy
YXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2Fu
IGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5l
IHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQotCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBO
bywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBw
aW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKKyAgICB7CisgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0K
IAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNv
bnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAg
IHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsK
KyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2Vu
ZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0
byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAg
ICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFk
LgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFu
ZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAg
IC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFr
ZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBu
b3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
c2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgewor
ICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlv
bjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgp
IGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0
YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2Vk
IGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEs
IGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04p
CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29u
c3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
UmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlk
ZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lm
IFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBi
b29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1Jl
ZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNl
Z21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRl
cikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0K
KyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBt
X2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNF
KEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8v
IEZvciBjcmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVj
dG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2
ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5T
RGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQ
dHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAg
ICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5k
aWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAg
UHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0
YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0
byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGlu
c3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgor
ICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBB
cnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhh
dAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBp
bnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6
ZV90IHNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0Rh
dGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBl
bmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdl
YkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hl
biB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1
ICsyMTAsMTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3Rv
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
IHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJp
dmF0ZToKICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5k
IHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkq
IGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxl
IERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAg
IG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8v
IEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0
byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQg
bWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVm
ZmVyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0
aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAg
IGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYg
KHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0
aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGly
ZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBh
c3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3Qg
KmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhQXNDaGFy
UHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDog
Ym9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6
Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25z
dDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5
dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
QEAgLTI2OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
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
MGJiMmZjYjkxLi4wMWMyMWU2ZjVjNjAwMjdiYWQ0ZWNjMjUwNDkzNTgwMjUzY2M2M2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwx
NyArNDEsMTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAv
LyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9u
IGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewot
ICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGlmIChhdXRvKiBkYXRh
ID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPm1faW1tdXRhYmxlRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAgfQot
ICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNp
emUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAg
IENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQu
c2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIGlmIChhdXRvKiBkYXRh
ID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21l
bnQtPm1faW1tdXRhYmxlRGF0YSkpCisgICAgICAgIHJldHVybiAqZGF0YTsKKyAgICByZXR1cm4g
YWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRp
ZgogCkBAIC03Miw3ICs2Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAg
ICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAg
ICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4
NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdj
NzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVy
JiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNC
aXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2lt
YWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGll
czpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRp
ZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5
cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4
MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3ODE2NzVhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
CiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9w
b3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2
b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJ
bnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgsMjIgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2Vf
Y2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNG
RGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsK
ICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNp
emUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50
LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVz
b3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBAIFJldGFpblB0cjxOU0Fy
cmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAgICB9KTsKIH0K
IAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNE
YXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
YWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdl
MjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNP
Tk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAg
ICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdi
ZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGExZmVhYjVkZjNhNzNkNTNl
NWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0x
MzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEu
aXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEg
PSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0
YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEt
PmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIw
Niw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21D
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3Vu
dCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSw3ICsyNDcs
NyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09O
IG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIK
ICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlz
IHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcg
dGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtl
eUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNv
bkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
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
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2
NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEy
ZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1f
cGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVx
dWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAg
ICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1
ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkw
NWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRh
ZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBA
IHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7
CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90
PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVj
ZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEz
ZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0
aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBw
b3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7
CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAg
ICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQg
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAg
IGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNl
VHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29k
ZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBz
ZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
CiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5z
aWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwog
ICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRh
UHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAg
YXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1
b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlv
biBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hh
cmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhl
IGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAg
ICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJh
Y2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3Mg
PSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVy
UmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCks
ICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1
b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
UHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1
M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAg
LTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0
YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsK
LSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihD
R1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0
YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcy
NzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBi
b29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVy
Lm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4
ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCos
IHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZm
ZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5j
YzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFp
blB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2so
KSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAg
IGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUo
Y3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4
YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAx
YTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5
cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAg
IHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFs
aXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2
YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAg
ICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBs
ZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2Fs
ZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9j
a2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAg
aWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRI
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzcz
MDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFk
NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZl
Y3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAg
cmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFw
cGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBs
dWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmlu
ZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRj
N2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgK
QEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlu
bGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3Is
IGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5t
YXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1
ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhl
OWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29u
c3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0g
YnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAg
bV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3Jl
YXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwog
ICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4
MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NU
X0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50
IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0
YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBH
U1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
KSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5
ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWlu
ZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
aW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVj
M2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wg
aXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2
b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIq
IGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2Vy
RGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRl
eHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVu
Z3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5n
dGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRh
LT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAg
ICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJr
dXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRp
YyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3Vw
RW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBh
eWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYg
KCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0
NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQzYTgyOGExYWYwNGE3OWVk
ZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgSW5pdERhdGEoY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAg
ICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5j
SWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RD
ZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJ
Zk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
YmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNm
NDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBG
b250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRp
b24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZj
cmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNi
YWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAot
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAz
ODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAz
MTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFn
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1
ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2
MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0
cnVjdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6
TWF0aFZhbHVlUmVjb3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGlj
c0NvcnJlY3Rpb25Db3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90
IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGds
eXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkp
CkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJh
Z2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0Owog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0x
MjAsNyArMTIwLDcgQEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAg
ICBQYXJ0RmxhZ3NFeHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3Bl
blR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBz
dHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6OlVJbnQxNiBhZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1sxXTsgLy8gVGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3Jk
J3MuCiAKLSAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2
YXJpYW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJl
Y29yZHNbY291bnRdKSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3Ry
dWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAg
ICAgICBjb25zdCBHbHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8
R2x5cGhBc3NlbWJseT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVj
dCBNYXRoVmFyaWFudHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQx
NiBob3Jpem9udGFsR2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENv
bnN0cnVjdGlvbnNPZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVy
dGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNh
bCBnbHlwaCBjb250cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24q
IG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MzJfdCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50
MTZfdChob3Jpem9udGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0
LDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRz
T2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRo
Q29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAg
ICAgIGlmIChvZmZzZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1h
dGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoR2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIw
LDcgKzIyMCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFu
dHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7
CiAgICAgICAgIGlmIChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJm
YjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQz
ZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyAr
NDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVu
VHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNp
dCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJM
RShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYg
VVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTVi
MzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJ
RDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwg
Y2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykp
IDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29u
c3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsK
ICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+
JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRp
b24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyAr
OTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUo
KTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAg
ICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9u
KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3
ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhf
dCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENv
dmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgp
CiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAg
IGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJ
bmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGgg
Z2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dp
dGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENv
dmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3
ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2
ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAv
LyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVz
IHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhl
IHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZh
dGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90
PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50
OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUg
PSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyAr
MjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250
IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZv
bnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9u
dE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4
IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2
YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApA
QCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFu
VVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7
CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4
ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9
OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJl
bmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZl
Y3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzll
OWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRp
b25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1h
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3Zl
cmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmds
ZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3
ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFy
a0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNv
IG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0
dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFi
bGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQx
Nl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBM
b29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxv
b2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBG
ZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291
bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29s
IGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vwcywg
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291
bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJl
c1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwg
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRh
ZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5k
ZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAg
LTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJl
KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBm
b3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAg
IGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0
dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVu
VHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0
dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0g
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1
Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2Ny
aXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBz
Y3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBT
Y3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJs
ZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAg
aWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0
TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsg
fQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZl
ciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlw
dExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29u
c3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwg
bG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2Ny
aXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRz
LT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6
VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRM
YW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZl
YXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wg
Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxH
bHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0
RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkK
QEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3Rh
dGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6Okho
ZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAg
IGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0
cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9h
ZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBv
cnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICBy
ZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFn
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAo
Z3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVy
dGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIx
YTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVy
LCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRj
MzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFm
NTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0
eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02
NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEg
Y3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAz
YzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNm
ZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgp
OwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwg
Zm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVj
NTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEw
Y2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApA
QCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkg
PT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3
YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3
OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBs
YXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0
IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7
CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3Qo
aGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxl
LCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJS
T1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JE
IHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwg
c2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0g
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2Ex
MTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIx
NDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNl
KGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBs
YWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNt
YXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJl
ZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5n
ZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0
b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51
bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+
IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2Fu
U21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3Rv
bURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmlu
ZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgy
MDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1v
cmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQu
Y29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29w
eVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0
RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1
OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZj
N2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAs
NyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
KQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmls
ZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJr
ZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsK
QEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1By
b2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAg
ICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZi
ZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVT
RShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3
OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYz
NWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6
dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFT
U0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6
ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMu
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAK
ICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8g
d2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5T
RGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9
IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRX
aXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxs
cHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9
IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRX
aXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAK
QEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAog
ICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRP
cmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
KyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lz
dGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bh
c3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQog
ICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQo
dHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6
ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpk
YXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5
cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1
dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAg
IGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlN
RVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBp
bWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1
dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJk
SW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBT
dHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlM
RV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1
c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlh
bGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9y
aWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMo
KSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1
LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9u
SW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3Rv
bURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVi
b2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBh
bmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3Zp
ZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0
eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRh
IGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBk
cmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICop
Y29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5T
U3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAog
ICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAg
IGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3Rl
Ym9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcg
Kzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJ
dGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RB
dEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJk
MWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMx
OTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
QEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBj
b2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9h
cmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51
cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJl
YWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9h
cmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBp
ZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAgLTM2
Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBl
cy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAg
ICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJU
RkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0
ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRl
eHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBj
YmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1
NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2Vi
Q29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmlu
Z107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVu
dFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6
d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0
b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsK
KyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAK
ICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9t
RGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAg
ICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgw
MzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUzZjcyN2E4ZWY2OGY5ZTFh
NmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBl
cyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFz
dGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZG
aWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8K
IHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAo
TlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRh
dGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEg
PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYg
KGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUg
OiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBl
cy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0
ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRm
b3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAg
ICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAg
LTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3Jp
dGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
ZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChh
dXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJk
IHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBh
c3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0
YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVE
YXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBj
aGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBO
U1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRl
bSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBpZiAo
TlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBu
c0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBj
cmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRh
LmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBh
dXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0
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
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1
NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJj
ZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJD
b3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVz
b3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0
aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRh
KV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNp
emUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUg
PSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24u
ZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2
ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlz
IGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxl
IChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhh
bmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShi
b3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZv
dW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBh
bGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1
ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAo
b3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVm
ZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAg
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1
YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdm
MTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9h
ZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3
NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZj
ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsx
NDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3Zl
KGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwg
V1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNk
NjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk4
Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50
KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYg
KGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5
TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKQEAgLTEwMzgsOCArMTAz
OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwm
IHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRh
IHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09M
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQot
ICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxl
LCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAo
ZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxl
KHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7
CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmlu
ZGV4IDg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUxNWE4YWFjZjg3MjMuLjA3MzlkZGY0NGJm
MDNjNWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZXN1bHQ7CiAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFu
ZGxlLCAwKTsKICAgICBEV09SRCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMs
NyArNTMsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAg
ICBpZiAoUmVhZEZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZi
eXRlc1JlYWQsIDApICYmIGJ5dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJl
c3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAg
ICByZXN1bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkg
cmVhZCBjb250ZW50cyBvZiBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGgu
YXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYz
ZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2
NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIx
MywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtl
Q29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0
YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNw
b25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJh
eSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwog
CiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2Ui
X3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBN
b2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYm
IGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRp
ZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2Vy
dGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVk
KTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBT
dHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkg
ewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEy
OGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYx
YzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250
aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZl
cnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9k
YXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsK
KyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmlu
ZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5
ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xp
ZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBi
b2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBb
Jl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0
ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1
NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3
ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRC
dWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRp
c2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55
IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUp
ID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMz
Mzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFy
KiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9v
bCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYm
IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJi
MzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0
LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAg
ICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBh
ZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3
ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li5iNzc4OTMyZjI4MWI3MTJlMDBmZjdh
ZjI2NmFhMzliZGQyMDFjMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRp
YyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7
CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3Bv
bnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYg
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
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
bGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4
NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBA
IGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7
ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJl
ZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6
Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBj
NTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNo
YXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRl
OgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
d3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4g
bV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3
NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5
MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwog
ICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkg
ewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFu
ZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5
cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0
OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVj
dG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9N
Q2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5j
b2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVj
b3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAg
IH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3
IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpA
QCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZh
bHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwg
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3Jt
RGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAg
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRl
bnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShp
ZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7
CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5w
dHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8
fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMx
MjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2Ny
aXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2
MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3
OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMz
NzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTks
MTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVy
PigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJl
cGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1l
bnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFj
MmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250
UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAg
ICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRl
Y29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5
ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAz
LDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAog
ewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlk
YzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBP
QkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0Vu
Y2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFn
ZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0Owot
ICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNo
bWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdkM2Rl
ZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0
IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAg
ICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxj
b25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJv
b2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZj
YTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJj
M2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJv
b2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVy
ICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3Jh
cHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlw
ZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50
YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2Vi
UGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3
YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2
LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6
QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAg
IHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9
IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hs
aWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxd
KTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxv
Y10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYg
KFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBw
SGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAg
W2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0
KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJl
cXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2
OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2lu
dCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQg
bGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9k
YXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVu
Z3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkp
KTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVk
MzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4
MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEw
MmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNF
cXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMg
b2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFt
ZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAg
IGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBm
b3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2Fy
ZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6
bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJy
YXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlm
IChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1f
cHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6
bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9N
UGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAg
IGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0
ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1
cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNv
bXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEw
ODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZi
MDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJp
bmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMDQ1MzlkNjAwNWQ1NDNi
YzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi5mM2FkNTc2YjMzM2E5MzI5NTAwNjNmN2EzYTk0Y2Y1
NzczYjQyYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3
OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmlu
ZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNo
bm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1
MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3
ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAg
ICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgp
IH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZj
OGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZh
YzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9
IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZl
ZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2MGEyOTFlYTU4YmEuLjBjNjI1
YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VM
KWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGlj
ZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0
YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7
CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9h
cmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QK
ICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcgKzc1NzAsNyBAQCAtICh2b2lk
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2Ui
LCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3
aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRh
dGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGlu
UmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmll
d10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDY3Yjk0MjAzNWU0
NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBh
ZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMw
YWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6
OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZi
NDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0
OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
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
bnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2Ey
OC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVk
aXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRp
dGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdl
dCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxl
ciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxl
KHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lk
KV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdh
dGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJv
bGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVy
KFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBl
bmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAg
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgx
MWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9h
cmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBu
dWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAg
ICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAg
ICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigp
KSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0t
PmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwog
ICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUx
YzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5h
bWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3Jt
VHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNm
OTNiYjI2N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwg
Y29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYo
KTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBp
ZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAg
IGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBj
aGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VT
aGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1
ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRp
Z3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZl
ci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQ
SSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5
cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hh
YmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmlu
ZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIy
MjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uZGRkNDljNDEwNWZjNTdh
MjliYzJhNjBjMWZlMjcwYzhhMzlmMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0yNzUsNyArMjc1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsK
ICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUg
U2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1
cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFh
M2I4YjdmZi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3
b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRo
ZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5p
c0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVy
LmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0s
IGVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
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
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThi
M2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJj
Y2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAg
IHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1l
bW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsK
ICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8g
YXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
TlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAg
ICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0
NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJh
bWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWlu
UmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUo
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBj
b25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4u
MmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3
ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rp
b24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4
IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2Zj
Yzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEg
KzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJ
S0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0
cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcg
KzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxz
Y3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEu
LjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcg
KzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURh
dGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0
NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZj
YjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyBy
ZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQx
YTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAy
ZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4u
MTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBl
cyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIw
OSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4
LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRi
Li5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyAr
NDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJl
cHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBl
ZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYy
ZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBA
IC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJj
ZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAg
ICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+
ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAg
ICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1l
bnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRB
cmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNk
NjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNh
MWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+
IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAg
ICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQot
ICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSku
Z2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEw
MTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2
b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNv
dXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpk
YXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJs
ID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5p
bCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsK
LSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291
cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAg
ICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBm
cmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVU
eXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpX
ZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5T
RGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5n
ICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5n
KCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICBy
ZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVE
YXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5z
aXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2Vh
Y2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVh
ODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1v
cnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0
cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1v
cnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlT
dHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1v
dmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4
IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNk
YjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBw
dWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFt
PiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBz
dGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NP
TV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFt
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVh
bSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNp
emVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJl
OWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5
OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsx
NjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFt
Kiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNm
RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNm
RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVy
biBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRv
KHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2
MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMz
ZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNl
ZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMw
MzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0
aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4
IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIw
YjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNl
OjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9h
ZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJl
ZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0
cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9P
dXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBh
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
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg2OGQyZTIzNjVm
ZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uYzcwY2M2Yjc4YTg2MjcxNWRjOThjMjM1YmQ4
ZTY2ODJhZWZmNjA1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVycm9yIG9uIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBk
ZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4xYjczNjNhODI3MjVjNzM4
NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDM4IEBAIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
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
CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXpl
KCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NF
UlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGJ1
ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU5
LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVuZ3Ro
ICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0
YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VSVF9F
USgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9uZS0+
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9u
ZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2En
LCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywg
J2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICds
JyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMy
KSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGlndW91
c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFiY2Qg
PSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRv
IGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAg
IGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
ICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihh
YmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0
YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsK
ICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAg
Y2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVy
KGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBjaGVj
a0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VRKGdo
MS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5z
aXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBs
LnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsyMTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
Y29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2In
LCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVy
KHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywg
J2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2Nj
MDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2
YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdv
cmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRo
KCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCld
IF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445948</attachid>
            <date>2021-12-03 20:11:41 -0800</date>
            <delta_ts>2021-12-03 22:32:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211204151139.patch</filename>
            <type>text/plain</type>
            <size>408062</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uYmMzZDk3YzdkYzUzMjU3YzgzYWI3YmE2Nzk0ODdm
MmI3MmVkYmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEJyb2FkY2FzdENoYW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBm
ZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMmE5MmY3NmRkODc2MTFkMjgxYTAy
OGIxMzc0OTUuLmU1YTJlZjc4MTg0N2ZmZDY4YzRiY2I0NDJlNzUzNWM3YmRkNTg0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFu
dDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNz
IHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5
MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIz
NTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZi
NWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9z
cyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRi
ZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3Vw
VG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2
YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdh
MDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQo
KSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5z
RGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2
OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0lt
YWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAg
ICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0
YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdl
RmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3
NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1Mzcz
MGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50
NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERP
TUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNp
emUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUy
MDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5
MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBi
b2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
Li5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVx
dWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVz
cG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2
Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEz
MSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29w
eSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1
ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUy
MDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJy
YXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMw
MjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGgg
IT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjpt
ZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1j
bXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBi
b29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0g
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEy
Yzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9k
eU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlu
cyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcy
LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29u
c3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChp
c0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYg
KGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHko
KS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygp
KSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJh
ZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlh
N2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRh
IHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkg
eyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1
ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBl
MGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJv
bSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7
Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNv
bnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZv
cm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpm
b3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5i
OTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4g
Y2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRf
dCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAg
IFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAg
ICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2
NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJl
YW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9u
c2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTlj
ODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBm
MTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwg
aGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwg
MSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUy
ZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRm
YmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyAr
NDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0
MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZj
YzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUz
ZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3Jl
YXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBv
YmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07
CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFk
LW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJl
IHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAog
CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFu
Z2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYx
MDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVh
dGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5k
UHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1
NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVh
ZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
RGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAg
bV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4
M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJp
bmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
cmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJl
ZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1
MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlw
ZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25z
ZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZh
bHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3Vs
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5
OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFz
ZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJh
MmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQot
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2Vm
MDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdj
NmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlP
cmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0
byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJl
c291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVz
b3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNv
bW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9z
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVy
KiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1No
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYz
Yzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgx
ODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJm
MjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0
NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdi
Li42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAg
IGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhp
cywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9u
cywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2Us
CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGlu
YXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRM
aWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBh
OWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2Vu
ZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lz
dGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFj
MjM1Li45MDZkNjRmNTFmYjJiNzg4MDVlMGJmMmM3YmQ1MDI5MTBmZTRmNTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRl
cnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4K
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
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
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZj
Y2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNp
Z25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
YWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcg
c2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3
N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
UmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFu
IGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZV
UkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5
ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQo
KSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25z
ZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9
CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
ZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJj
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0
ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0
YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAg
IAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAg
ICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEo
KTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBj
ZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAg
IGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBs
aXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZl
LT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJl
ZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5
KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3Vi
cmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBl
ZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJl
c3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAg
ICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAg
LTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50
LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAg
IC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUg
cGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBi
b2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0g
IjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdo
dD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwi
PjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBi
ZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50
VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAg
ICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRh
OWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQz
ZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNv
ZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2Vl
cCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5
NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpA
QCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBi
MTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVu
dEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFn
ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y
dCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQy
MmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
OTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAx
YWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRT
aXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAt
MTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVy
aW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChk
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0
ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRl
c1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgog
ICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAi
dGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4Mzli
NzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1l
IGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVu
dC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9z
ZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThl
ZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1
ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUg
ZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRD
b250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJv
cigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAg
IGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVS
SSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRl
ZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXgg
MzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAy
N2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZh
Y2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0Rv
Y3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThm
NzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQx
YjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
IAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgx
NTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1
MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVj
Li5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0z
MiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2Uq
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlz
a0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNr
aW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
ZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEz
MTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2Un
bGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdl
IGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRv
clRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWRE
YXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVN
b25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tl
ZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNz
aW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJj
YjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBl
YjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0
YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3
aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdp
dGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9j
dW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJl
IGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3
OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRl
eHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVu
dC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9
KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6
IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVl
biBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRF
bmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwog
ICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
ICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZj
YmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJl
c291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6
ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRk
MmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZh
Y2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5n
IGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVh
M2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBl
bmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAg
aWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9h
ZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3
OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUy
MGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXll
ZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZl
ZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiAr
NjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAg
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVi
b2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5k
aWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0
U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
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
MWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMz
ZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4
Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2
ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMy
MGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNj
NzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25h
bERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1
NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVh
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewot
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0g
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFz
c2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcg
YWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGht
cyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
PSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAg
IHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAq
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2
LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hh
cmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3Vv
dXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsK
QEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUg
PSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdt
ZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xv
bmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hh
cmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBt
X3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVE
CkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYg
KzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhi
Njc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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
bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRW
ZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToK
ICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
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
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi4wMWMyMWU2ZjVjNjAwMjdiYWQ0ZWNjMjUwNDkzNTgwMjUzY2M2M2YwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwxNyArNDEs
MTEgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3Rk
OjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1f
aW1tdXRhYmxlRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAgfQotICAgIGF1
dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkp
OwotICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0
YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgp
KTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIGlmIChhdXRvKiBkYXRhID0gc3Rk
OjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1f
aW1tdXRhYmxlRGF0YSkpCisgICAgICAgIHJldHVybiAqZGF0YTsKKyAgICByZXR1cm4gYWRvcHRD
RihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBA
IC03Miw3ICs2Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7
Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NF
UlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5h
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
MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGExZmVhYjVkZjNhNzNkNTNlNWY3MTk1
NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzgsNyAr
MTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0
eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTIwNiw3ICsy
MDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgha2V5SWRDb3VudCB8fCAh
aW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERh
dGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7
CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBr
ZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSw3ICsyNDcsNyBAQCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVj
dCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAv
LyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBi
YXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtl
eSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEg
PSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdiZjAw
ODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdhYTk0YjRiNGJjMmNiZjkyMmFh
ZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBA
IHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBU
eXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtl
eWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5i
dWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4
ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAw
YmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEz
MiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1f
YXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQo
bV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAg
R1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJp
YW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2Rh
dGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRh
dGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3Np
emUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRh
dGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3Np
emUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJj
ZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2
MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVk
RW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNv
ZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7
CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmlu
ZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjc4ODkxN2RhZWY5
Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzgsMTYgKzM4LDE2IEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8
R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRl
cz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICBy
ZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdf
d2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29u
c3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250
aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxD
b250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5k
ZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3
M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZv
bnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBp
bnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIs
IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBm
bG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Rm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3Jp
Z2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAg
IGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNy
ZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdl
YWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEyNjQxZTM4YzgyOTQwMGY1ZTMyNTRk
ZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAt
ODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpW
aXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9y
aWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEsIEludGVyc3RpdGlhbCA9
IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNp
YmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
PSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAz
MGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAx
ZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVy
ZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25j
ZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZl
ciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEg
ewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAg
ICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEg
ewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVt
SW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlS
ZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5
Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9k
ZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92
ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6
TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQor
TW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBt
aW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9t
aW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1
NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0
MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApA
QCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBV
UkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVS
TCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0
cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
IFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7
CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5
cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1v
ZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkp
OwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5
NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZi
OTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBr
V29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFs
dWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsK
ICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3
ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChi
dWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAg
c3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90
IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2
NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jv
b2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qg
b2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAg
cHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewog
ICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcg
QEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0K
IAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBW
ZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQo
KmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxz
ZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQx
ZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZl
N2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8v
IFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYo
U2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAK
IC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291
bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNp
b24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMg
dGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJl
ZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJl
bnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29u
dmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29u
dmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0
byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3
Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFk
NmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9m
IHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAg
IGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VK
U09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4
IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMz
NjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBA
IC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFs
dWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhl
IHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsK
IAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEy
ICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25E
YXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRh
dGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxz
ZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZB
SVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBl
ID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3Ry
aW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNp
emUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGlu
aXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpT
T05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pT
T05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcw
LDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJl
ZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRh
dGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAg
ICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdl
dCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9y
eUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4
LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYg
KCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250
ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9h
ZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3Qg
cHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNs
YXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VE
YXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBA
IC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
J3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3Bv
bnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9u
c2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJl
cXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8z
NTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtl
eVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNl
c3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhw
aXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBl
bmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVy
LmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAg
c3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tT
ZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9y
IChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6
YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsK
QEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9
IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0Vt
cHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRl
bnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0
cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNv
bnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBs
ZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRh
ICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhp
cyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0
YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRp
ZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAg
IHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0Owog
ICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAg
ICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQt
PmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygi
a2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXls
b2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5n
ZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1v
dmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhW
ZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9y
UmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBj
b250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRl
bnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVy
cm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUo
a2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVl
c3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpA
QCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0g
ICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
QHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRl
bnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJv
ciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERh
dGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpp
bmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFk
ZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZm
ZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAg
ICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6
Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAg
ICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQo
KSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JL
ZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250
ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwor
ICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRh
UmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRl
eCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMx
NjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21l
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5k
RmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFy
ZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0g
QXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJl
YW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0
YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2
NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2
MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmUKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI4LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYK
IAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51
cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAg
bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVy
bCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3
N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVk
ZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01
NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2Zv
bnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZl
NjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAz
M2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENG
RGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJH
ZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlv
biwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGlu
Zm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAg
aWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcg
KzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1
dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlk
ZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZl
RGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlk
ZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBj
b250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0
YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxs
YmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVm
ZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUg
cG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBp
cyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAg
ICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAs
IDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFz
ZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92
aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0
YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VT
b3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5k
ZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5
ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3
ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29s
KQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRv
Y3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4
ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9u
dC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2Yzdk
NmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVf
dCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRl
cmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYz
ODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxD
RlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25z
dAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250
KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2Nh
YjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJy
YXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRp
YyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJl
ZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQy
Li5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29s
IEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAg
JiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21h
bikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250
LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0
RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVy
cm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4
NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1
aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJu
IHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3du
ZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2
YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGJi
YjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRjN2IxN2Uz
OTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMy
LDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBi
b29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50
IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJs
eSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsK
IAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4m
JiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlh
ZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJh
MGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAog
dm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVy
LmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5l
ckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0
aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0s
IFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmEx
NWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIs
NyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXph
dGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVH
KCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNp
emUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAog
ICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVN
RFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXRE
YXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAg
ICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5p
dERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBl
KCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXgg
M2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4
MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJz
aW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1h
cmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1l
bnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0
ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01h
cmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAg
ICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwog
ICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3No
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNl
ckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNz
aCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJv
cihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFy
a3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxl
bWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQg
PSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXls
b2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlh
NzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNm
MzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1f
c3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVk
ZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZO
ZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
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
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
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhMzdhMGQ4NzRmNzJiZjkxYmQ1
MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3
OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMo
KSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDZlY2Q3ZjFiMDczYzM4
MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIw
ODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lz
dHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7
CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAK
ICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9
CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNT
dHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2
ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3
YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5k
ZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNm
NGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAg
ICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5k
bGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5h
bExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFu
ZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFs
TGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdp
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
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYx
ZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBmZmQzYmM3NjMwMjYwZDYxYzFmOWZi
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9h
ZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAg
ICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAh
bV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2Rh
dGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3Vz
RGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRhID0g
Y29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAg
ICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
CisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDhh
OTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5NzZlZGE5ZDRhNzgx
MDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAt
MTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYm
IGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0g
cmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJl
ZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1E
YXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVs
bHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIy
OWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZi
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIg
U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUg
ZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUg
ZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZh
dGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsK
IH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5
ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmks
CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1
ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2Jh
bENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJl
cXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5k
ZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVh
Zjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2
NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJl
dHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIw
NzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1f
d3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBi
dWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
IH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0
ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFk
YzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lk
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3lu
Y2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAg
aWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBw
ZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVm
ZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
KEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3
MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5
YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAg
ICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBl
NmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxi
YWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsK
KyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+
OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRl
eCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4
OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNp
emUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+
ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4
IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNi
ZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3Qg
UmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9k
eTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxX
ZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBm
b3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRl
Y29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwot
ICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVz
cG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3Jh
Z2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29y
ZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2
MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBp
ZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVy
LT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBt
X2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0
YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGIyMGFh
NTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2MzNmZmZlYTQ4ZGQwZjNmMmM1
ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2
MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRp
b25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9
IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgp
LCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8gYnl0ZXMg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+
Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9p
bnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNm
NGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAxZWJjNTkzZjk5MjZmNTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZl
ckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXpl
KCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVm
ZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZWZm
YjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTcgKzQwLDE0IEBAIHB1
YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCiAgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0K
ICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0g
ICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZl
ZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2Nj
MWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hh
cmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBj
b25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAy
Y2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1
MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBA
IC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ug
c2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2Ew
YzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMz
OGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNl
V2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
IAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0
ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAv
LyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEu
CiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGVi
MWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEz
NDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0
LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJs
ZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZh
Y2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVl
KCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8g
bG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAg
ICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJk
MGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJl
bW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAl
ZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAg
IHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
eyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9
CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4u
MmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
SGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlz
IH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0
aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQ
dHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgq
dGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYx
Ni4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJs
ZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAg
IFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcElu
U2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFy
ZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMuLjY3
YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRl
Y29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAg
ICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkK
QEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNp
emUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsy
NDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIs
IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0
cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVp
bnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAg
ICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8
PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsm
XShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0
ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU4
Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwog
ICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9
IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmll
ciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlm
aWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApA
QCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZm
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVm
ZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVm
ZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1
NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2Nzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxv
YlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFi
YS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1
OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVm
ZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEu
LjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVu
dENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAo
aW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMx
YTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsx
MDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2
YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdhNDYxOGZlZDQyMmVjMzg5NzQwMzUu
LjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlhMWE2MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0
YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTll
ZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4
NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0
YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFt
X2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9
IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJp
YWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24s
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2Qz
Yy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1
OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGln
aGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQg
PSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0
TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5o
aWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxp
Z2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5O
ZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RP
cmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMy
OS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIx
MSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBv
c2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3Ro
OwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4g
MCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAg
ICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVm
MGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUz
NjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUt
Pm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
M2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRj
YWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
TlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRv
OldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
IGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRl
eDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0
QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1h
Z2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0
ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChh
cmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBl
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNT
dHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9t
aXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
cGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldl
YlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJM
ICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3By
b21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0
YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlz
ZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7
CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRs
ZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJk
LmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBv
cmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQ
YXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRp
b24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2
MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2
ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0Njgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlv
bkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3Rv
cnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJl
c0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1NWFjYmExODliMzliOWU4
OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBkODYyNzUxODViZjYyOWYxYTQ3NmNmNGZl
NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OSw3ICsx
MTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5
VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAg
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5
TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMx
NmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3ICsyMTks
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAg
ICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Cisg
ICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
KG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0Rh
dGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIz
Li5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcgKzE4
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsK
ICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
LCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRp
b25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxh
eWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
aW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4
YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdl
QnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rv
c0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3M2M2MGEyOTFlYTU4YmEuLjBjNjI1YzMwZDMw
M2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3
ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlv
biB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0
ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwog
ICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewot
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0g
Zm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAg
ICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVt
T3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAg
ICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAg
ICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcwLDcgKzc1NzAsNyBAQCAtICh2b2lkKWFjdGlv
blNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJl
RWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVE
YXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVm
YXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5v
IGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGlt
YWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihp
bWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDog
eyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBj
b21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBmODBjODI0OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5
OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAg
LTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBhZWUwODM4
MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5
OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJk
ZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJm
OWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdl
JiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdl
JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4
ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdE
ZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0Rl
bGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxs
V3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisg
ICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRF
ZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVk
aXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+
X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktp
dDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmlu
ZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVz
LmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0
ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdl
JiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9B
UEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRy
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAg
ICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3Ig
KGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAg
ICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5k
ZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0
ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZp
bmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3Jl
OjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0
YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmUwMDZjNDY0ZTYxNDNmOTNiYjI2
N2Y2YTQwNzJiOWY3ZGUzYTg5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
UmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAg
ICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4o
ZGF0YSkpLT5kZXJlZigpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hh
cmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilz
aGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+
cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIo
KSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1w
bCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJM
LnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1
MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNj
MGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQog
ICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEo
KS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxl
UGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQy
Y2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOGI1ODIxMTRiOTM1YjI3MjRlOWVh
ZDMzZDZjYTQyY2ZkZjEyY2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEs
NyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBp
ZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4Yjdm
Zi4uODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVy
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAg
IGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29k
ZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFj
ZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0
YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsK
ICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1
OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2
MjBlMDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUz
MjkxZDIzMjlkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODks
NyArMTE4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURh
dGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAg
ICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExv
YWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2
MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVz
OjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRl
KHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3Zl
cnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJv
Y2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00
MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRU
eXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hh
bmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRm
NTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3Yjdl
YmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVy
T2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2
b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4
OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
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
bW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3
MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5p
c05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQx
MGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQz
NWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3
IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4o
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dF
QktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3
IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4o
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTVi
NmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3
IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAg
ICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1
cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFm
NWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODcz
YWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4g
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTlj
MzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAg
IC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7
CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4
YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIz
MTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAg
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsy
MDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMx
YjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcg
QEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2Vu
dGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYw
ZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUx
NjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJP
T0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewog
ICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAg
ICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNv
dXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRv
ICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2Fk
ZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZl
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0
NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0
ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYg
KGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAg
ICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5z
aXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2
MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVu
Y29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0g
bmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmls
OwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZy
YW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAK
KwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51
cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAg
dGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5h
bWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5j
b2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5
XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNv
dXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAq
KWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAg
ICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ug
PyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4g
ZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8g
Y29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkg
OiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51
bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZi
ZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNk
NzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBA
IC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJl
YW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6
fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJl
YW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdk
YTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5
MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMg
SVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMg
Q09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRw
dHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBt
X3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4
N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBA
QCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3Ry
ZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5n
ZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5n
ZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVh
bSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0
MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIw
MjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYp
Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1
MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIz
MjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsK
LSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hh
bmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDcz
ZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1
ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRh
KF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQog
ICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0
cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7
CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJf
b3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQz
NDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBD
T01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
aAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVj
NTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3Vy
Y2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDEwZmMyZmZlYjJiNWRiYTBj
NTFiMmJhYTdjNWFjYzVlMGQ2ODk4Yi4uMGM5OWNkNzcyOTZjZTZiNTA1NDFiY2U5YTA0ZTBmMmI3
MThiZjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIg
ZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAg
ICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0
aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRl
eCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4xYjczNjNhODI3MjVj
NzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDM4IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJu
b3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJu
b3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJp
bmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5z
aXplKCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVh
ckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBB
U1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAt
MTU5LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEFTU0VS
VF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVu
Z3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+
ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VS
VF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9u
ZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBj
bG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNr
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3Qg
Y2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsg
J2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycs
ICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFi
Y2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNv
bWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBh
dXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwot
ICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2
KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZl
cihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2gu
ZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdo
MS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgi
KTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAg
ICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBj
aGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAg
Y2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VR
KGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdo
MS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgp
LCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsyMTQsMTUgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0
N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4
ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQ
YXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRo
KCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445960</attachid>
            <date>2021-12-03 22:32:59 -0800</date>
            <delta_ts>2021-12-03 23:55:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211204173257.patch</filename>
            <type>text/plain</type>
            <size>407969</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uYmMzZDk3YzdkYzUzMjU3YzgzYWI3YmE2Nzk0ODdm
MmI3MmVkYmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEJyb2FkY2FzdENoYW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBm
ZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMmE5MmY3NmRkODc2MTFkMjgxYTAy
OGIxMzc0OTUuLmU1YTJlZjc4MTg0N2ZmZDY4YzRiY2I0NDJlNzUzNWM3YmRkNTg0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFu
dDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNz
IHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5
MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIz
NTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZi
NWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9z
cyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRi
ZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3Vw
VG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2
YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdh
MDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQo
KSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5z
RGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2
OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0lt
YWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAg
ICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0
YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdl
RmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3
NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1Mzcz
MGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50
NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERP
TUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNp
emUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUy
MDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5
MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBi
b2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
Li5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVx
dWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVz
cG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2
Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEz
MSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29w
eSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1
ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUy
MDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJy
YXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMw
MjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGgg
IT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjpt
ZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1j
bXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBi
b29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0g
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEy
Yzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9k
eU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlu
cyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcy
LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29u
c3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChp
c0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYg
KGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHko
KS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygp
KSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJh
ZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlh
N2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRh
IHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkg
eyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1
ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBl
MGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJv
bSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7
Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNv
bnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZv
cm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpm
b3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5i
OTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4g
Y2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRf
dCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAg
IFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAg
ICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2
NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJl
YW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9u
c2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTlj
ODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBm
MTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwg
aGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwg
MSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUy
ZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRm
YmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyAr
NDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0
MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZj
YzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUz
ZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3Jl
YXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBv
YmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07
CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFk
LW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJl
IHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAog
CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFu
Z2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYx
MDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVh
dGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5k
UHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1
NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVh
ZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
RGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAg
bV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4
M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJp
bmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
cmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJl
ZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1
MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlw
ZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25z
ZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZh
bHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3Vs
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5
OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFz
ZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJh
MmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQot
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2Vm
MDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdj
NmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlP
cmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0
byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJl
c291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVz
b3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNv
bW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9z
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVy
KiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1No
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYz
Yzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgx
ODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJm
MjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0
NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdi
Li42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAg
IGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhp
cywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9u
cywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2Us
CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGlu
YXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRM
aWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBh
OWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2Vu
ZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lz
dGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFj
MjM1Li45MDZkNjRmNTFmYjJiNzg4MDVlMGJmMmM3YmQ1MDI5MTBmZTRmNTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRl
cnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4K
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
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
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZj
Y2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNp
Z25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
YWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcg
c2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3
N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
UmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFu
IGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZV
UkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5
ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQo
KSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25z
ZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9
CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
ZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJj
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0
ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0
YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAg
IAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAg
ICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEo
KTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBj
ZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAg
IGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBs
aXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZl
LT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJl
ZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5
KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3Vi
cmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBl
ZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJl
c3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAg
ICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAg
LTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50
LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAg
IC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUg
cGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBi
b2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0g
IjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdo
dD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwi
PjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBi
ZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50
VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAg
ICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRh
OWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQz
ZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNv
ZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2Vl
cCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5
NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpA
QCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBi
MTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVu
dEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFn
ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y
dCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQy
MmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
OTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAx
YWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRT
aXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAt
MTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVy
aW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChk
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0
ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRl
c1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgog
ICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAi
dGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4Mzli
NzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1l
IGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVu
dC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9z
ZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThl
ZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1
ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUg
ZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRD
b250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJv
cigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAg
IGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVS
SSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRl
ZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXgg
MzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAy
N2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZh
Y2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0Rv
Y3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThm
NzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQx
YjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
IAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgx
NTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1
MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVj
Li5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0z
MiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2Uq
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlz
a0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNr
aW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
ZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEz
MTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2Un
bGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdl
IGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRv
clRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWRE
YXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVN
b25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tl
ZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNz
aW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJj
YjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBl
YjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0
YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3
aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdp
dGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9j
dW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJl
IGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3
OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRl
eHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVu
dC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9
KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6
IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVl
biBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRF
bmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwog
ICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
ICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZj
YmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJl
c291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6
ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRk
MmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZh
Y2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5n
IGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVh
M2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBl
bmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAg
aWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9h
ZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3
OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUy
MGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXll
ZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZl
ZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiAr
NjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAg
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVi
b2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5k
aWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0
U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
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
MWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMz
ZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4
Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2
ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMy
MGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNj
NzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25h
bERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1
NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVh
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewot
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0g
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFz
c2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcg
YWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGht
cyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
PSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAg
IHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAq
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2
LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hh
cmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3Vv
dXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsK
QEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUg
PSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdt
ZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xv
bmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hh
cmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBt
X3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVE
CkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYg
KzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhi
Njc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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
bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRW
ZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToK
ICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
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
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwxNyArNDEs
MTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewog
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAg
cmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNl
Z21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0
YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXpl
KCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZm
MjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRi
YWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5
cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2
OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3
ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNE
YXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
KyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAg
ICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEs
NyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgs
MjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGEx
ZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAg
ICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXRE
YXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGln
dW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlk
RnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBm
b3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoK
ICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNp
emUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTgu
LjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXko
KQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBt
X2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2Vm
ZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2Iz
MjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3
MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUy
N2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xp
Yjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92
YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRh
dGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5j
ZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4
OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApA
QCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5
dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBh
ZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdw
b2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAg
ICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3
OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBs
YXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9u
RmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1S
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQo
KSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
aW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEy
NjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
b250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRi
MjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7
CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVl
MjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0
ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBN
b2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUo
dXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1f
dXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4
OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAg
ICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkz
LDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1v
ZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUo
Km1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRl
eCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNi
M2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09G
MiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFk
VUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29m
ZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jv
b2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkp
OwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkg
PT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBp
ZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252
ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRl
eCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRk
NGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09G
RiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3
b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhh
bXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0
dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhl
IGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhl
IGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEz
ZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsK
LSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3No
U3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwog
ICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRT
ZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgp
OwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIu
Z2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAg
ICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNl
Iik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBG
SVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2Fs
bCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFj
ay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Np
b25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFu
Z2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlm
IChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0g
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7
CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAg
LTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBS
ZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRh
aW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2
LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBl
bnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9
IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3RE
YXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5n
ZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RK
U09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsx
MjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVl
c3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0g
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdh
dG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVx
dWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWEx
MGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3
ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXRE
ZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0
Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0g
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNl
aXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJl
MjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRl
V2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAg
IFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJl
YW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBh
MjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5
ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQog
CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1
N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3
YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNh
aXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlh
N2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3
ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVk
U2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkK
IHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVk
QnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUo
KSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9
IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAg
dm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8g
Q3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRh
dGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdl
dEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIg
b25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0
byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3Qg
bW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0
ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJv
dmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
biwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0
YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNv
ZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0
MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3Vt
ZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRl
ci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFl
M2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4
NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAt
NTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2Zv
bnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5
ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQq
IHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5
MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCAr
MTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNr
KGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihD
VEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlv
bnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZi
NGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0
Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJy
YXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJh
MmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAx
ZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFy
bWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBm
dF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9
IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJM
RShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZj
OTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFj
MzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIy
LDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rv
cigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9v
bCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcx
YmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZl
cihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUw
NjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwot
ICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIs
IFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAg
ICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBb
dGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklu
bmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRl
Y29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1
OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIx
MDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRE
CiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3
ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRh
LnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAx
YjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRh
dGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsK
IH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioq
LCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0
LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2Rl
KHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNz
aCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3Bv
aW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0
RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gs
IG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5
bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQz
YTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
SW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBw
YXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXls
b2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0K
IApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4u
NTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0
YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5k
ZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5j
cmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMx
NWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5
Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpp
bmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZh
OGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3Vu
ZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhj
ZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFl
NGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
LmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZk
MzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRo
QnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4g
bV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFh
ZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4
NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRl
ZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtF
X1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgo
dWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWlu
dDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNv
dW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90
IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVv
ZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxp
ZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3Rl
ZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3Rl
ZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVP
ZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAg
Y2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3
YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRk
aW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnRE
YXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUK
IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkg
cmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9y
aWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciog
c2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEo
KSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8g
UmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5
c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9u
dChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2Yu
LjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUx
Mj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0
cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0Owog
Ci0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZl
ciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Uo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsK
IAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRh
YmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5U
eXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJp
YWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAg
Ym9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJU
YWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZz
ZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJs
ZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhb
MV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29r
dXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7
CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRl
eCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBm
ZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3Qg
TGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3Vu
dF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNS
ZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3
ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAg
fQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0g
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3Jp
cHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVh
dHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0
PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1
cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0
KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBA
IC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFu
Z1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAg
IH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJv
b2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJl
KE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNh
bEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVh
VGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxl
PihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0
LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBm
b250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2
aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxl
KiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBk
MjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhi
OWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5m
NGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVV
bmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0
NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTEx
MDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEw
NTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCAr
NTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZP
TlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
c2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9u
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBj
ZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0
MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNl
ID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1f
Y3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsK
ICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRh
YTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAv
LyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4g
Y2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2lu
KCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0
NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21h
cmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBt
YXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2Vu
ZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQot
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0
OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4
Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyAr
NjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRh
dGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0
YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwx
MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
UGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50
LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7
CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3Ry
aW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFz
dGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0
YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAg
ICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAK
LSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1h
Z2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BS
RVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0
YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFz
U2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Yg
c3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50
cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0
aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4g
dGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdl
IHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVy
biByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWlu
ZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYy
YzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAg
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAg
ICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAg
ICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmlu
ZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQz
NzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
W2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsK
ICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7
Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07Cisg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUz
ZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVi
b2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRU
eXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9h
cmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewot
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgp
KTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2
LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBT
dHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJk
VHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgp
OwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsK
ICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bh
c3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRl
eCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3
Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9y
bURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewog
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVt
ZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Js
b2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUz
M2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5
LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYg
ZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdh
eXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4
MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTky
NTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0Yzlh
ZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2Rh
NGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAh
cmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRh
ID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2Vp
dmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRl
PiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxm
LmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0
YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRm
ZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8v
IFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAg
bV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBu
b3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhl
IHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wg
Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hl
Y2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFy
eVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJv
dW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBi
b3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBw
YXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5s
ZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNk
ODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAs
NyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93
bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2Fk
RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5
NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgx
ZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChj
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMx
MmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVh
NjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgp
KQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAK
QEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29u
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBm
ZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUw
NjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTcz
M2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVu
Yyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxv
d2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZj
NzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBj
aGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3
NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEz
YzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkg
OiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2
ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0
cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
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
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMu
LmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAg
fQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSht
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0
KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAx
ZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhl
NTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApA
QCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZh
dWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4u
YjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXpl
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVk
VGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2Yjcz
Y2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQg
c3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1
ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdl
YkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4u
MzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhl
IHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNp
emUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFs
dWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUx
M2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1
ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkx
MGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRj
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAg
ICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRj
MWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2
NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+
JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVm
PFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2
MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNl
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8
PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNp
emUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNv
dW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdU
Rjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBl
bmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpA
QCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4g
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBh
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
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdh
NDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlh
MWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
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
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0
Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1
MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDoo
Y29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0
LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0
byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRo
SGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5p
bF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6
d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2
Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0
NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFS
ZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNp
ZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0g
Z3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwog
ICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0
Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9t
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
Mzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZh
YzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
LT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzky
Y2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3
Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00
NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRV
UkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0
ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
Om5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAx
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdl
LT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEg
KilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyAr
NDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
ZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJ
bW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEg
KmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBp
ZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVy
LmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+
Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJh
bCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3
MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9j
dXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRl
bnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBkODYy
NzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJv
b2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9p
ZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJh
ZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFi
YjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYg
KGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1f
c3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRh
KSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
dGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4u
OGI1ODIxMTRiOTM1YjI3MjRlOWVhZDMzZDZjYTQyY2ZkZjEyY2U0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
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
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThk
MjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFn
ZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlm
NTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlh
ZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBA
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
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBl
ZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1
ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcg
QEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1
NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVh
ZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdi
YmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAg
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2Uo
KS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFy
Y2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2
ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVm
ZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMu
LjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBA
QCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRh
dGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRl
bnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1
N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlm
IChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5l
ZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYu
LmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJ
VCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0g
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxz
ZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkg
Y29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRf
SU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2Qx
NjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjoo
Qk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5i
YTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3Ry
aW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVu
aWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgx
MzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAx
MmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2Vi
S2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZk
ZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1
NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQg
KzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
I2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZk
MzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRU
eXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5y
ZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5Zjkw
YTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
IDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUz
MmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcg
Kilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2
ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0
YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2
ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4
ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEz
OGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgp
KSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5z
ZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRk
ZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAt
MTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIg
KilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAg
Ci0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsK
ICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRl
eHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+
bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGlu
ZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAg
IHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0K
LSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5
XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3Vy
Y2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNv
dXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpX
ZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVu
Y29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcg
KzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3
IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93
c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkg
OiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
aW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQy
YTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3Ry
ZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0
NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVt
b3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEu
LjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlT
dHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01Q
dHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVu
a25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAt
NzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0g
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1l
bW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJl
ZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5
ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRw
dHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVm
ZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
MjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4
YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0
OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2Vy
VHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUu
LjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
ICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
cmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVz
ZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJl
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1
YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJm
Y2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdl
YlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVz
b3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4
ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAog
Y2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBz
dGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZDEwZmMyZmZlYjJiNWRiYTBjNTFiMmJhYTdjNWFjYzVlMGQ2ODk4Yi4uMGM5OWNkNzcyOTZj
ZTZiNTA1NDFiY2U5YTA0ZTBmMmI3MThiZjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIg
Y29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9u
SW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJj
N2NhNDY4Li4xYjczNjNhODI3MjVjNzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApA
QCAtNDMsMzggKzQzLDM4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVM
TChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZl
ci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU5LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHko
KTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25l
LT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFT
U0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMz
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAn
ZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShz
MykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1
dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAg
IGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRh
KCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
YWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRh
KDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7
Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGgu
ZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWpr
bC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCks
ICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJh
YmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAg
IGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsy
MTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVy
OwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VR
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdl
dCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5k
ZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJm
MTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2
Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445963</attachid>
            <date>2021-12-03 23:55:43 -0800</date>
            <delta_ts>2021-12-03 23:57:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211204185540.patch</filename>
            <type>text/plain</type>
            <size>407969</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uYmMzZDk3YzdkYzUzMjU3YzgzYWI3YmE2Nzk0ODdm
MmI3MmVkYmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEJyb2FkY2FzdENoYW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBm
ZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMmE5MmY3NmRkODc2MTFkMjgxYTAy
OGIxMzc0OTUuLmU1YTJlZjc4MTg0N2ZmZDY4YzRiY2I0NDJlNzUzNWM3YmRkNTg0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFu
dDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNz
IHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5
MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIz
NTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZi
NWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9z
cyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRi
ZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3Vw
VG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2
YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdh
MDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQo
KSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5z
RGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2
OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0lt
YWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAg
ICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0
YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdl
RmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3
NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1Mzcz
MGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50
NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERP
TUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNp
emUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUy
MDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5
MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBi
b2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
Li5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVx
dWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVz
cG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2
Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEz
MSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29w
eSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1
ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUy
MDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJy
YXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMw
MjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGgg
IT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjpt
ZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1j
bXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBi
b29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0g
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEy
Yzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9k
eU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlu
cyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcy
LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29u
c3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChp
c0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYg
KGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHko
KS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygp
KSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJh
ZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlh
N2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRh
IHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkg
eyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1
ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBl
MGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJv
bSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7
Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNv
bnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZv
cm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpm
b3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5i
OTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4g
Y2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRf
dCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAg
IFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAg
ICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2
NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJl
YW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9u
c2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTlj
ODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBm
MTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwg
aGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwg
MSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUy
ZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRm
YmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyAr
NDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0
MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZj
YzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUz
ZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3Jl
YXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBv
YmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07
CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFk
LW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJl
IHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAog
CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFu
Z2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYx
MDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVh
dGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5k
UHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1
NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVh
ZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
RGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAg
bV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4
M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJp
bmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
cmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJl
ZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1
MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlw
ZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25z
ZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZh
bHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3Vs
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5
OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFz
ZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJh
MmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQot
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2Vm
MDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdj
NmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlP
cmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0
byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJl
c291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVz
b3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNv
bW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9z
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVy
KiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1No
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYz
Yzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgx
ODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJm
MjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0
NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdi
Li42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAg
IGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhp
cywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9u
cywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2Us
CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGlu
YXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRM
aWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBh
OWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2Vu
ZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lz
dGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFj
MjM1Li45MDZkNjRmNTFmYjJiNzg4MDVlMGJmMmM3YmQ1MDI5MTBmZTRmNTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRl
cnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4K
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
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
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZj
Y2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNp
Z25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
YWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcg
c2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3
N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
UmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFu
IGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZV
UkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5
ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQo
KSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25z
ZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9
CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
ZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJj
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0
ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0
YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAg
IAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAg
ICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEo
KTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBj
ZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAg
IGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBs
aXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZl
LT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJl
ZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5
KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3Vi
cmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBl
ZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJl
c3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAg
ICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAg
LTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50
LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAg
IC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUg
cGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBi
b2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0g
IjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdo
dD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwi
PjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBi
ZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50
VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAg
ICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRh
OWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQz
ZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNv
ZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2Vl
cCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5
NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpA
QCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBi
MTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVu
dEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFn
ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y
dCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQy
MmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
OTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAx
YWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRT
aXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAt
MTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVy
aW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChk
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0
ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRl
c1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgog
ICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAi
dGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4Mzli
NzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1l
IGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVu
dC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9z
ZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThl
ZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1
ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUg
ZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRD
b250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJv
cigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAg
IGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVS
SSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRl
ZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXgg
MzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAy
N2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZh
Y2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0Rv
Y3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThm
NzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQx
YjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
IAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgx
NTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1
MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVj
Li5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0z
MiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2Uq
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlz
a0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNr
aW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
ZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEz
MTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2Un
bGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdl
IGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRv
clRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWRE
YXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVN
b25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tl
ZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNz
aW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJj
YjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBl
YjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0
YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3
aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdp
dGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9j
dW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJl
IGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3
OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRl
eHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVu
dC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9
KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6
IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVl
biBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRF
bmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwog
ICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
ICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZj
YmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJl
c291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6
ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRk
MmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZh
Y2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5n
IGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVh
M2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBl
bmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAg
aWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9h
ZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3
OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUy
MGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXll
ZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZl
ZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiAr
NjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAg
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVi
b2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5k
aWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0
U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
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
MWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMz
ZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4
Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2
ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMy
MGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNj
NzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25h
bERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1
NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVh
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewot
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0g
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFz
c2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcg
YWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGht
cyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
PSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAg
IHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAq
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2
LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hh
cmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3Vv
dXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsK
QEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUg
PSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdt
ZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xv
bmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hh
cmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBt
X3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVE
CkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYg
KzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhi
Njc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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
bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRW
ZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToK
ICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
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
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwxNyArNDEs
MTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewog
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAg
cmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNl
Z21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0
YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXpl
KCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZm
MjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRi
YWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5
cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2
OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3
ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNE
YXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
KyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAg
ICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEs
NyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgs
MjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGEx
ZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAg
ICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXRE
YXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGln
dW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlk
RnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBm
b3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoK
ICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNp
emUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTgu
LjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXko
KQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBt
X2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2Vm
ZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2Iz
MjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3
MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUy
N2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xp
Yjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92
YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRh
dGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5j
ZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4
OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApA
QCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5
dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBh
ZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdw
b2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAg
ICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3
OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBs
YXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9u
RmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1S
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQo
KSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
aW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEy
NjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
b250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRi
MjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7
CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVl
MjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0
ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBN
b2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUo
dXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1f
dXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4
OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAg
ICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkz
LDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1v
ZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUo
Km1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRl
eCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNi
M2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09G
MiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFk
VUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29m
ZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jv
b2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkp
OwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkg
PT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBp
ZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252
ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRl
eCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRk
NGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09G
RiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3
b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhh
bXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0
dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhl
IGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhl
IGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEz
ZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsK
LSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3No
U3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwog
ICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRT
ZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgp
OwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIu
Z2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAg
ICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNl
Iik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBG
SVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2Fs
bCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFj
ay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Np
b25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFu
Z2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlm
IChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0g
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7
CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAg
LTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBS
ZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRh
aW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2
LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBl
bnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9
IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3RE
YXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5n
ZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RK
U09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsx
MjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVl
c3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0g
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdh
dG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVx
dWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWEx
MGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3
ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXRE
ZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0
Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0g
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNl
aXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJl
MjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRl
V2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAg
IFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJl
YW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBh
MjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5
ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQog
CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1
N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3
YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNh
aXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlh
N2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3
ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVk
U2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkK
IHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVk
QnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUo
KSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9
IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAg
dm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8g
Q3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRh
dGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdl
dEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIg
b25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0
byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3Qg
bW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0
ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJv
dmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
biwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0
YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNv
ZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0
MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3Vt
ZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRl
ci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFl
M2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4
NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAt
NTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2Zv
bnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5
ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQq
IHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5
MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCAr
MTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNr
KGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihD
VEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlv
bnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZi
NGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0
Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJy
YXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJh
MmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAx
ZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFy
bWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBm
dF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9
IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJM
RShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZj
OTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFj
MzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIy
LDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rv
cigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9v
bCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcx
YmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZl
cihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUw
NjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwot
ICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIs
IFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAg
ICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBb
dGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklu
bmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRl
Y29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1
OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIx
MDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRE
CiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3
ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRh
LnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAx
YjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRh
dGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsK
IH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioq
LCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0
LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2Rl
KHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNz
aCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3Bv
aW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0
RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gs
IG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5
bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQz
YTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
SW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBw
YXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXls
b2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0K
IApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4u
NTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0
YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5k
ZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5j
cmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMx
NWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5
Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpp
bmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZh
OGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3Vu
ZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhj
ZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFl
NGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
LmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZk
MzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRo
QnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4g
bV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFh
ZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4
NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRl
ZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtF
X1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgo
dWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWlu
dDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNv
dW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90
IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVv
ZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxp
ZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3Rl
ZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3Rl
ZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVP
ZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAg
Y2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3
YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRk
aW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnRE
YXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUK
IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkg
cmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9y
aWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciog
c2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEo
KSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8g
UmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5
c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9u
dChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2Yu
LjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUx
Mj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0
cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0Owog
Ci0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZl
ciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Uo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsK
IAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRh
YmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5U
eXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJp
YWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAg
Ym9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJU
YWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZz
ZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJs
ZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhb
MV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29r
dXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7
CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRl
eCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBm
ZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3Qg
TGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3Vu
dF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNS
ZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3
ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAg
fQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0g
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3Jp
cHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVh
dHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0
PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1
cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0
KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBA
IC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFu
Z1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAg
IH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJv
b2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJl
KE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNh
bEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVh
VGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxl
PihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0
LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBm
b250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2
aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxl
KiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBk
MjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhi
OWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5m
NGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVV
bmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0
NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTEx
MDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEw
NTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCAr
NTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZP
TlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
c2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9u
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBj
ZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0
MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNl
ID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1f
Y3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsK
ICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRh
YTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAv
LyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4g
Y2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2lu
KCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0
NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21h
cmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBt
YXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2Vu
ZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQot
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0
OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4
Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyAr
NjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRh
dGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0
YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwx
MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
UGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50
LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7
CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3Ry
aW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFz
dGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0
YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAg
ICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAK
LSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1h
Z2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BS
RVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0
YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFz
U2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Yg
c3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50
cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0
aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4g
dGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdl
IHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVy
biByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWlu
ZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYy
YzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAg
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAg
ICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAg
ICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmlu
ZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQz
NzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
W2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsK
ICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7
Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07Cisg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUz
ZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVi
b2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRU
eXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9h
cmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewot
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgp
KTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2
LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBT
dHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJk
VHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgp
OwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsK
ICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bh
c3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRl
eCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3
Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9y
bURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewog
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVt
ZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Js
b2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUz
M2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5
LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYg
ZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdh
eXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4
MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTky
NTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0Yzlh
ZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2Rh
NGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAh
cmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRh
ID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2Vp
dmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRl
PiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxm
LmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0
YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRm
ZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8v
IFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAg
bV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBu
b3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhl
IHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wg
Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hl
Y2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFy
eVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJv
dW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBi
b3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBw
YXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5s
ZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNk
ODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAs
NyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93
bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2Fk
RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5
NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgx
ZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChj
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMx
MmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVh
NjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgp
KQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAK
QEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29u
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBm
ZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUw
NjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTcz
M2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVu
Yyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxv
d2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZj
NzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBj
aGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3
NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEz
YzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkg
OiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2
ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0
cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
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
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMu
LmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAg
fQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSht
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0
KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAx
ZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhl
NTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApA
QCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZh
dWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4u
YjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXpl
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVk
VGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2Yjcz
Y2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQg
c3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1
ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdl
YkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4u
MzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhl
IHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNp
emUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFs
dWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUx
M2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1
ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkx
MGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRj
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAg
ICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRj
MWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2
NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+
JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVm
PFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2
MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNl
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8
PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNp
emUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNv
dW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdU
Rjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBl
bmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpA
QCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4g
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBh
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
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdh
NDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlh
MWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
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
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0
Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1
MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDoo
Y29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0
LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0
byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRo
SGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5p
bF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6
d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2
Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0
NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFS
ZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNp
ZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0g
Z3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwog
ICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0
Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9t
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
Mzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZh
YzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
LT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzky
Y2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3
Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00
NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRV
UkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0
ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
Om5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAx
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdl
LT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEg
KilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyAr
NDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
ZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJ
bW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEg
KmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBp
ZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVy
LmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+
Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJh
bCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3
MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9j
dXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRl
bnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBkODYy
NzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJv
b2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9p
ZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJh
ZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFi
YjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYg
KGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1f
c3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRh
KSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
dGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4u
OGI1ODIxMTRiOTM1YjI3MjRlOWVhZDMzZDZjYTQyY2ZkZjEyY2U0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
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
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThk
MjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFn
ZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlm
NTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlh
ZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBA
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
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBl
ZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1
ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcg
QEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1
NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVh
ZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdi
YmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAg
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2Uo
KS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFy
Y2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2
ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVm
ZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMu
LjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBA
QCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRh
dGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRl
bnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1
N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlm
IChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5l
ZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYu
LmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJ
VCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0g
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxz
ZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkg
Y29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRf
SU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2Qx
NjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjoo
Qk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5i
YTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3Ry
aW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVu
aWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgx
MzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAx
MmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2Vi
S2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZk
ZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1
NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQg
KzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
I2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZk
MzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRU
eXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5y
ZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5Zjkw
YTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
IDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUz
MmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcg
Kilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2
ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0
YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2
ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4
ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEz
OGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgp
KSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5z
ZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRk
ZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAt
MTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIg
KilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAg
Ci0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsK
ICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRl
eHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+
bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGlu
ZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAg
IHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0K
LSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5
XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3Vy
Y2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNv
dXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpX
ZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVu
Y29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcg
KzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3
IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93
c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkg
OiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
aW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQy
YTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3Ry
ZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0
NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVt
b3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEu
LjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlT
dHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01Q
dHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVu
a25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAt
NzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0g
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1l
bW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJl
ZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5
ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRw
dHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVm
ZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
MjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4
YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0
OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2Vy
VHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUu
LjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
ICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
cmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVz
ZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJl
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1
YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJm
Y2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdl
YlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVz
b3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4
ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAog
Y2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBz
dGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZDEwZmMyZmZlYjJiNWRiYTBjNTFiMmJhYTdjNWFjYzVlMGQ2ODk4Yi4uMGM5OWNkNzcyOTZj
ZTZiNTA1NDFiY2U5YTA0ZTBmMmI3MThiZjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIg
Y29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9u
SW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJj
N2NhNDY4Li4xYjczNjNhODI3MjVjNzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApA
QCAtNDMsMzggKzQzLDM4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVM
TChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZl
ci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU5LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHko
KTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25l
LT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFT
U0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMz
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAn
ZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShz
MykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1
dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAg
IGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRh
KCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
YWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRh
KDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7
Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGgu
ZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWpr
bC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCks
ICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJh
YmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAg
IGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsy
MTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVy
OwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VR
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdl
dCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5k
ZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJm
MTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2
Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445964</attachid>
            <date>2021-12-03 23:57:23 -0800</date>
            <delta_ts>2021-12-05 21:21:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211204185721.patch</filename>
            <type>text/plain</type>
            <size>408596</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uYmMzZDk3YzdkYzUzMjU3YzgzYWI3YmE2Nzk0ODdm
MmI3MmVkYmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEJyb2FkY2FzdENoYW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBm
ZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMmE5MmY3NmRkODc2MTFkMjgxYTAy
OGIxMzc0OTUuLmU1YTJlZjc4MTg0N2ZmZDY4YzRiY2I0NDJlNzUzNWM3YmRkNTg0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFu
dDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNz
IHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5
MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIz
NTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZi
NWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9z
cyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRi
ZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3Vw
VG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2
YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdh
MDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQo
KSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5z
RGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2
OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0lt
YWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAg
ICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0
YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdl
RmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3
NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1Mzcz
MGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50
NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERP
TUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNp
emUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUy
MDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5
MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBi
b2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
Li5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVx
dWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVz
cG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2
Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEz
MSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29w
eSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1
ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUy
MDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJy
YXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMw
MjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGgg
IT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjpt
ZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1j
bXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBi
b29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0g
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEy
Yzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9k
eU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlu
cyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcy
LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29u
c3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChp
c0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYg
KGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHko
KS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygp
KSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJh
ZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlh
N2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRh
IHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkg
eyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1
ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBl
MGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJv
bSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7
Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNv
bnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZv
cm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpm
b3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5i
OTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4g
Y2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRf
dCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAg
IFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAg
ICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2
NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJl
YW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9u
c2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTlj
ODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBm
MTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwg
aGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwg
MSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUy
ZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRm
YmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyAr
NDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0
MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZj
YzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUz
ZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3Jl
YXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBv
YmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07
CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFk
LW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJl
IHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAog
CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFu
Z2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYx
MDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVh
dGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5k
UHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1
NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVh
ZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
RGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAg
bV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4
M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJp
bmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
cmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJl
ZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1
MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlw
ZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25z
ZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZh
bHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3Vs
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5
OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFz
ZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJh
MmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQot
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2Vm
MDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdj
NmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlP
cmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0
byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJl
c291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVz
b3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNv
bW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9z
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVy
KiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1No
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYz
Yzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgx
ODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJm
MjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0
NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdi
Li42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAg
IGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhp
cywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9u
cywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2Us
CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGlu
YXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRM
aWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBh
OWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2Vu
ZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lz
dGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFj
MjM1Li4yZjJlODJjMmIxN2YzYzk0ZGViZjBhNmE0MThmNDQzM2U0YWFiZDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMzNCwxMyArMzM0LDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRh
UGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5
cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKQEAgLTU3MSw3ICs1NjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRl
cnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4K
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
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
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZj
Y2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNp
Z25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
YWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcg
c2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3
N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
UmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFu
IGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZV
UkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5
ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQo
KSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25z
ZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9
CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
ZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJj
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0
ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0
YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAg
IAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAg
ICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEo
KTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBj
ZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAg
IGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBs
aXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZl
LT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJl
ZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5
KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3Vi
cmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBl
ZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJl
c3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAg
ICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAg
LTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50
LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAg
IC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUg
cGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBi
b2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0g
IjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdo
dD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwi
PjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBi
ZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50
VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAg
ICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRh
OWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQz
ZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNv
ZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2Vl
cCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5
NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpA
QCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBi
MTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVu
dEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFn
ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y
dCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQy
MmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
OTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAx
YWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRT
aXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAt
MTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVy
aW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChk
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0
ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRl
c1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgog
ICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAi
dGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4Mzli
NzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1l
IGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVu
dC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9z
ZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThl
ZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1
ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUg
ZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRD
b250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJv
cigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAg
IGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVS
SSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRl
ZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXgg
MzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAy
N2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZh
Y2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0Rv
Y3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThm
NzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQx
YjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
IAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgx
NTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1
MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVj
Li5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0z
MiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2Uq
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlz
a0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNr
aW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
ZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEz
MTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2Un
bGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdl
IGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRv
clRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWRE
YXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVN
b25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tl
ZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNz
aW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJj
YjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBl
YjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0
YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3
aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdp
dGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9j
dW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJl
IGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3
OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRl
eHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVu
dC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9
KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6
IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVl
biBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRF
bmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwog
ICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
ICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZj
YmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJl
c291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6
ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRk
MmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZh
Y2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5n
IGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVh
M2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBl
bmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAg
aWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9h
ZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3
OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUy
MGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXll
ZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZl
ZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiAr
NjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAg
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVi
b2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5k
aWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0
U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
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
MWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMz
ZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4
Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2
ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMy
MGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNj
NzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25h
bERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1
NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVh
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewot
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0g
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFz
c2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcg
YWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGht
cyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
PSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAg
IHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAq
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2
LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hh
cmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3Vv
dXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsK
QEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUg
PSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdt
ZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xv
bmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hh
cmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBt
X3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVE
CkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYg
KzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhi
Njc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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
bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRW
ZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToK
ICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
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
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwxNyArNDEs
MTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewog
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAg
cmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNl
Z21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0
YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXpl
KCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZm
MjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRi
YWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5
cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2
OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3
ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNE
YXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
KyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAg
ICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEs
NyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgs
MjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGEx
ZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAg
ICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXRE
YXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGln
dW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlk
RnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBm
b3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoK
ICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNp
emUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTgu
LjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXko
KQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBt
X2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2Vm
ZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2Iz
MjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3
MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUy
N2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xp
Yjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92
YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRh
dGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5j
ZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4
OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApA
QCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5
dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBh
ZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdw
b2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAg
ICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3
OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBs
YXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9u
RmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1S
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQo
KSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
aW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEy
NjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
b250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRi
MjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7
CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVl
MjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0
ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBN
b2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUo
dXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1f
dXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4
OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAg
ICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkz
LDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1v
ZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUo
Km1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRl
eCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNi
M2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09G
MiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFk
VUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29m
ZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jv
b2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkp
OwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkg
PT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBp
ZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252
ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRl
eCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRk
NGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09G
RiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3
b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhh
bXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0
dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhl
IGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhl
IGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEz
ZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsK
LSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3No
U3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwog
ICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRT
ZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgp
OwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIu
Z2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAg
ICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNl
Iik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBG
SVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2Fs
bCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFj
ay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Np
b25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFu
Z2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlm
IChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0g
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7
CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAg
LTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBS
ZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRh
aW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2
LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBl
bnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9
IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3RE
YXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5n
ZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RK
U09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsx
MjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVl
c3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0g
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdh
dG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVx
dWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWEx
MGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3
ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXRE
ZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0
Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0g
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNl
aXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJl
MjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRl
V2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAg
IFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJl
YW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBh
MjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5
ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQog
CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1
N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3
YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNh
aXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlh
N2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3
ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVk
U2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkK
IHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVk
QnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUo
KSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9
IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAg
dm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8g
Q3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRh
dGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdl
dEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIg
b25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0
byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3Qg
bW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0
ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJv
dmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
biwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0
YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNv
ZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0
MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3Vt
ZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRl
ci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFl
M2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4
NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAt
NTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2Zv
bnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5
ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQq
IHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5
MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCAr
MTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNr
KGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihD
VEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlv
bnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZi
NGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0
Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJy
YXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJh
MmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAx
ZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFy
bWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBm
dF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9
IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJM
RShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZj
OTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFj
MzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIy
LDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rv
cigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9v
bCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcx
YmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZl
cihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUw
NjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwot
ICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIs
IFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAg
ICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBb
dGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklu
bmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRl
Y29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1
OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIx
MDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRE
CiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3
ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRh
LnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAx
YjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRh
dGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsK
IH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioq
LCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0
LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2Rl
KHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNz
aCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3Bv
aW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0
RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gs
IG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5
bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQz
YTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
SW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBw
YXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXls
b2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0K
IApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4u
NTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0
YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5k
ZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5j
cmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMx
NWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5
Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpp
bmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZh
OGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3Vu
ZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhj
ZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFl
NGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
LmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZk
MzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRo
QnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4g
bV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFh
ZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4
NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRl
ZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtF
X1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgo
dWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWlu
dDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNv
dW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90
IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVv
ZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxp
ZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3Rl
ZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3Rl
ZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVP
ZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAg
Y2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3
YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRk
aW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnRE
YXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUK
IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkg
cmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9y
aWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciog
c2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEo
KSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8g
UmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5
c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9u
dChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2Yu
LjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUx
Mj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0
cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0Owog
Ci0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZl
ciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Uo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsK
IAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRh
YmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5U
eXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJp
YWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAg
Ym9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJU
YWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZz
ZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJs
ZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhb
MV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29r
dXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7
CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRl
eCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBm
ZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3Qg
TGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3Vu
dF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNS
ZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3
ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAg
fQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0g
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3Jp
cHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVh
dHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0
PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1
cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0
KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBA
IC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFu
Z1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAg
IH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJv
b2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJl
KE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNh
bEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVh
VGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxl
PihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0
LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBm
b250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2
aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxl
KiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBk
MjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhi
OWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5m
NGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVV
bmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0
NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTEx
MDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEw
NTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCAr
NTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZP
TlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
c2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9u
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBj
ZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0
MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNl
ID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1f
Y3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsK
ICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRh
YTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAv
LyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4g
Y2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2lu
KCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0
NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21h
cmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBt
YXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2Vu
ZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQot
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0
OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4
Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyAr
NjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRh
dGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0
YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwx
MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
UGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50
LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7
CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3Ry
aW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFz
dGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0
YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAg
ICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAK
LSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1h
Z2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BS
RVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0
YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFz
U2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Yg
c3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50
cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0
aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4g
dGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdl
IHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVy
biByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWlu
ZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYy
YzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAg
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAg
ICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAg
ICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmlu
ZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQz
NzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
W2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsK
ICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7
Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07Cisg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUz
ZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVi
b2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRU
eXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9h
cmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewot
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgp
KTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2
LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBT
dHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJk
VHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgp
OwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsK
ICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bh
c3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRl
eCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3
Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9y
bURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewog
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVt
ZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Js
b2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUz
M2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5
LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYg
ZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdh
eXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4
MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTky
NTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0Yzlh
ZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2Rh
NGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAh
cmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRh
ID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2Vp
dmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRl
PiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxm
LmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0
YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRm
ZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8v
IFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAg
bV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBu
b3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhl
IHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wg
Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hl
Y2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFy
eVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJv
dW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBi
b3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBw
YXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5s
ZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNk
ODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAs
NyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93
bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2Fk
RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5
NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgx
ZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChj
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMx
MmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVh
NjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgp
KQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAK
QEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29u
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBm
ZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUw
NjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTcz
M2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVu
Yyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxv
d2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZj
NzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBj
aGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3
NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEz
YzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkg
OiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2
ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0
cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
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
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMu
LmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAg
fQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSht
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0
KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4xMTdiYzE3YzMyNjE0NjI2NmI4ODI4MTAx
ZWJjNTkzZjk5MjZmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhl
NTYzYTZlM2RmMTgzMmU5Zi4uZWZmYjE2MmRhMGM3YmI2ZDE1OGY0MTMxZjFlNGJkMWE1MWQ2MGJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApA
QCAtNDAsMTcgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZh
dWx0OwogCiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4u
YjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXpl
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVk
VGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2Yjcz
Y2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQg
c3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1
ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdl
YkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4u
MzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhl
IHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNp
emUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFs
dWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUx
M2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1
ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkx
MGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRj
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAg
ICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRj
MWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2
NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+
JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVm
PFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2
MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNl
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8
PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNp
emUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNv
dW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdU
Rjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBl
bmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpA
QCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4g
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoYnVmZmVyKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBh
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
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdh
NDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlh
MWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
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
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0
Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1
MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDoo
Y29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0
LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0
byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRo
SGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6
dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0Fw
cEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5p
bF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6
d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0
UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2
Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0
NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFS
ZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNp
ZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0g
Z3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwog
ICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0
Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9t
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
Mzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZh
YzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
LT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzky
Y2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3
Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
Zm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00
NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRV
UkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0
ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRh
ID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0g
YXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
Om5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNo
aXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAx
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdl
LT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEg
KilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyAr
NDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
ZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJ
bW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEg
KmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBp
ZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVy
LmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+
Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJh
bCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6
R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZjNWEzMTE3
MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9j
dXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRl
bnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZmZjBkODYy
NzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJV
SVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJv
b2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9p
ZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJh
ZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFi
YjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYg
KGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAo
bV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9z
eW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1f
c3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRh
KSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
dGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4u
OGI1ODIxMTRiOTM1YjI3MjRlOWVhZDMzZDZjYTQyY2ZkZjEyY2U0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
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
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uMTUyMDViYThk
MjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFn
ZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2Fy
ZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlm
NTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0YzZkMmUxODllYjUxOTlh
ZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODcsNyArODcsNyBA
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
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBl
ZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2YzUyZjFlMzlkZWYwMGI1
ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0zMjQsNyArMzI0LDcg
QEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjNmZjM1
NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVh
ZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdi
YmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAg
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2Uo
KS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVt
ZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFy
Y2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2
ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVm
ZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMu
LjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBA
QCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRh
dGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRl
bnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1
N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEyZGI0MWIwNzNlMWI4YzI1YWQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlm
IChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5l
ZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYu
LmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJ
VCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0g
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxz
ZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkg
Y29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRf
SU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2Qx
NjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjoo
Qk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVmNjE2YzMyZmQ2MjY3NjQ3Li5i
YTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3Ry
aW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVu
aWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgx
MzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAx
MmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2Vi
S2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25s
eSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZk
ZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1
NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQg
KzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
I2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZk
MzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMwYjdlODA4NjE3YWY4NTQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRU
eXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5y
ZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5Zjkw
YTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
IDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUz
MmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcg
Kilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2
ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0
YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2
ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4
ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEz
OGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgp
KSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5z
ZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRk
ZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5ZTI5N2IxZDE3OWRjYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAt
MTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIg
KilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAg
Ci0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsK
ICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRl
eHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+
bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGlu
ZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAg
IHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0K
LSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5
XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3Vy
Y2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNv
dXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpX
ZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVu
Y29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcg
KzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3
IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93
c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkg
OiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
aW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQy
YTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3Ry
ZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0
NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVt
b3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEu
LjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlT
dHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01Q
dHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVu
a25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAt
NzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0g
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1l
bW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsg
MCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJl
ZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5
ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRw
dHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkp
KTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVm
ZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
MjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4
YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0
OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2Vy
VHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUu
LjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
ICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
cmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVz
ZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJl
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1
YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJm
Y2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdl
YlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVz
b3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4
ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAog
Y2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBz
dGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
ICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZDEwZmMyZmZlYjJiNWRiYTBjNTFiMmJhYTdjNWFjYzVlMGQ2ODk4Yi4uMGM5OWNkNzcyOTZj
ZTZiNTA1NDFiY2U5YTA0ZTBmMmI3MThiZjUxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIg
Y29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9u
SW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJj
N2NhNDY4Li4xYjczNjNhODI3MjVjNzM4NTRkNDk5Njg0MDNiYzBmYTQ1NGE2NzY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApA
QCAtNDMsMzggKzQzLDM4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVM
TChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZl
ci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODMsMTIgKzgzLDEzIEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQpAQCAtMTU5LDcgKzE2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUo
KSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHko
KTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25l
LT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFT
U0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc2LDMz
IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAn
ZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZl
Y3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShz
MykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1
dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAg
IGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRh
KCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
YWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRh
KDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7
Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGgu
ZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWpr
bC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCks
ICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJh
YmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6
ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAg
IGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsy
MTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVy
OwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VR
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdl
dCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5k
ZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJm
MTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2
Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445993</attachid>
            <date>2021-12-05 21:21:47 -0800</date>
            <delta_ts>2021-12-06 21:44:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211206162143.patch</filename>
            <type>text/plain</type>
            <size>411177</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmMDU5YTA5MjFhOWRj
NmYwM2VhNDA3ZGQ2M2JkOTAwOWQ0ZDI5Yi4uYmMzZDk3YzdkYzUzMjU3YzgzYWI3YmE2Nzk0ODdm
MmI3MmVkYmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
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
bmMpOgorCiAyMDIxLTEyLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIEJyb2FkY2FzdENoYW5uZWwsIENPT1AsIENPRVAgYW5kIFdlYiBMb2NrcyB0byBm
ZWF0dXJlcy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3NzY5MTQ5NzZiMmE5MmY3NmRkODc2MTFkMjgxYTAy
OGIxMzc0OTUuLmU1YTJlZjc4MTg0N2ZmZDY4YzRiY2I0NDJlNzUzNWM3YmRkNTg0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAg
ICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERh
dGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVU
eXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFu
dDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1
bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBXZWIgY29udGVudCBwcm9jZXNz
IHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5
MzM4MGQ4MzNkZTkyZDEuLjBmMDg2ZTM5ZTViZDQ0NTYwMmFhZDI2NDMxMTVjZTRkZjYzNGIyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0xMS0y
NSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVz
dEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIz
NTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLjA2MGY5YWY4YzU0YTI2MDFkNzg0OTg5M2FiNmZi
NWM0ZjJiMGZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpk
YXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9z
cyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRi
ZjljOTA3OC4uMmIxNjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI2Nyw3
ICsyNjcsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgICAgICBTdHJpbmcgbWFya3Vw
VG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6
ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2
YzA4MzI4YWYzMDdhM2E0NDEwMC4uNThjZTgwOWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdh
MDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0
KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQo
KSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5z
RGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2
OWRhN2U1YmYuLmY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0lt
YWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAg
ICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0
YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdl
RmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDliM2Y4NDA3
NDVkMWEwNjk4ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcuLjhiZmY4MDcwNmU2ZTE5OWE1NGM1Mzcz
MGZiNmMzN2M5ZmY4MzI5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50
NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNvbnN0IERP
TUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAgV1RGOjpz
d2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAg
ICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZmZXItPnNp
emUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUy
MDk0ZjY1NDk5YmI5MGRkN2YwMDcxZDQyNGMuLjZlNWM0NTY0ZDVjNzZlMDQwNDIzOWM1MTQ5MWY5
MWE1OTRhMDFjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CkBAIC0zMDEsMTMgKzMwMSwxMyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVl
c3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRk
UmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBkYXRhLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1
dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBi
b2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjky
Li5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0
V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVx
dWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVz
cG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2
Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEz
MSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVm
PEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBm
b3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29w
eSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8g
Q29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpS
ZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUu
LmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAg
RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYp
OwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1
ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li4yYzYzOGY3Yzg0MTk0NjQ5MGUy
MDQ4NzY0MmM5YTcyMTczYzUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9
OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0g
SlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRz
QXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJy
YXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMw
MjI4YTM0ZWFlYzU3OTdhMy4uMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGgg
IT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjpt
ZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1j
bXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBi
b29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0g
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVh
dGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBw
YWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uZjEy
Yzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDkyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9k
eU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlm
IChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsK
LSAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNl
KSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlu
cyBibG9icywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcy
LDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QK
ICAgICBpZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURh
dGEmPihmb3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRh
dGEoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29u
c3VtZXIudGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChp
c0Jsb2IoKSkgewpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYg
KGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7
CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVy
bFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHko
KS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3Ro
KCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmll
d0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygp
KSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGJh
ZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQuLjA4OTgzZWMwMDQzZjZjOTlh
N2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+
PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRh
IHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkg
eyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1
ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjEyNmI1Mzg0OGE5OTA5ZGM3MjQwOTcxYjQ0NzZkZTBiZTBl
MGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28K
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRh
KFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJv
bSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7
Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNv
bnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZv
cm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpm
b3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBl
RXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNv
dXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5i
OTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4g
Y2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1f
Y29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRf
dCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAg
IFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAg
ICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAg
ICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2
NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJl
YW0oKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9u
c2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OwogICAgIFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEo
UmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTlj
ODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBm
MTFiOTY2YjllNTI1ODcxZDgxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgp
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwg
aGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwg
MSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUy
ZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRm
YmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyAr
NDYsOCBAQCBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0
MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZj
YzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0
IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUz
ZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
IGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFi
YXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3Jl
YXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAg
IExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAg
LTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBv
YmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRh
KTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07
CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAg
ICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVt
b3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFk
LW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJl
IHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChr
ZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAg
IGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxs
KCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBh
dXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBw
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAog
CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6Oktl
eVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9u
ZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFu
Z2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgp
ID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsK
KyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAg
ICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBp
biBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYx
MDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7
CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpi
dWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVh
dGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5k
UHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQr
KywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4
ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1
NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVh
ZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
RGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5k
YXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAg
bV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5k
ZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4
M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4YzcyOTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50JiBjbGllbnQsCiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKICAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJp
bmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi43NWRlYWQzYjk2MGJhOWJjNTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
cmVsZWFzZU5vbk51bGwoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5
cGUoKSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
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
MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJl
ZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAogICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggNDRlMDg0YTI4ODQyZmJjNTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uZDE1Y2I0Yjg1
MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAt
MTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAo
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlw
ZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25z
ZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZh
bHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3Vs
dCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi41Y2Q5
OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2UwNmYzMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDMsMTIgKzEwMywxMiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFz
ZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4
dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJh
MmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQot
ICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJj
ZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2Vm
MDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdj
NmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlP
cmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0
byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJl
c291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li42ZmViOGY1YWJlNWJhNDkyODA2ZWFlNjU1MDUyOTFjZDZmYTc3ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2Uo
KTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVz
b3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNv
bW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NTIsNyArMTY1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9z
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVy
KiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1No
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTYsNyArMjI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENv
bnRlbnQoKQogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29t
bWl0dGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0g
bWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYz
Yzg3Li43Y2YzMDVkNzA1ZDQ4NDcyZmZjODc2NmJmMTFjYjY0ZmY4ZGQyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgx
ODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyLi5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJm
MjgxNDA2OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0
eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5
bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdiOTVkYTI0NDNhZTg0Li45ZTlmMjk0
NjcyZjNkNjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCA1NjYxMDgzODA1NjY0ZTAxMTlmMTFmZmMzMmVhN2UxOTI3ZmM2NTdi
Li42MzA5OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJl
ciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigp
KTsKQEAgLTMxNDksNyArMzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAg
IGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRT
eW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhp
cywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9u
cywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAg
ICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2Us
CiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGlu
YXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExp
a2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRM
aWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBh
OWEwMWZhZmI2OGIwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2Vu
ZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBF
dmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNv
bnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lz
dGVtUHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9h
ZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFj
MjM1Li4yZjJlODJjMmIxN2YzYzk0ZGViZjBhNmE0MThmNDQzM2U0YWFiZDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMzNCwxMyArMzM0LDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRh
UGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jl
c291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5
cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKQEAgLTU3MSw3ICs1NjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRl
cnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4K
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2Vu
ZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZl
RGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRh
dGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVu
Y29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlk
YTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVm
YTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
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
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZj
Y2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBh
dGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkK
LSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNp
Z25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
YWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcg
cGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcg
c2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3
N2EzZjAxNWQuLmY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8g
UmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFu
IGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkp
OwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZV
UkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5
ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQo
KSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25z
ZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9
CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
ZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJj
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0
ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0
YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjU2LDE1ICsyNTYsMTUg
QEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEpCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAg
IAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAg
ICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEo
KTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBj
ZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAg
IGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBs
aXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0
aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZl
LT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJl
ZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5
KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90
IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
CisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3Vi
cmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wg
TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAg
ICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVB
cmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBl
ZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJl
c3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAg
ICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAg
LTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50
LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAg
IC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUg
cGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBi
b2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0g
IjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdo
dD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwi
PjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBi
ZGI4MDE1ZS4uNzMzNmIzN2RlM2JkZGRhNmZhM2RmOTYzMmY5YjZjMzFkNDJjNTMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cApAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNl
cjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBj
b250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50
VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAg
ICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNv
bnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUo
Y29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYg
KCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBj
b250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0g
ICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJ
bnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRh
OWViZmQ5MjcwNC4uNjYxYTk5YWU1NzZhMmI5MDhkY2EwOTY2NDQ0YmIwYWQ1ZmIxM2I0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcApAQCAtNDIsMTAgKzQyLDE0IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxCiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi42NmQz
ZWFjNWI1ZGNjNjAxZDhlMDE2NzI3Mjc2N2U1M2ZhMmY4YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05OSwxMSArOTksMTUgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRo
ZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBh
cm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNv
ZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2Vl
cCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5
NC4uZjY0MzMzZjA0MzM2YjM2YzYxMDdhNDYzMGMwMjQxN2U0ODRhMjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjYsOCArNjYsMTMgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
IAogdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0g
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpA
QCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAg
ICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250
OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjBiN2VkOWJmMWM2MDk5ZjU3NWFhYjMwZTk1MzQxZjE3NmY4MTE4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xv
YWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShj
b25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxh
dGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
IAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBi
MTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi43MmMxOWY2NTdiZDQ3N2Mx
M2E5OGQwMWRiODBlZmMwNTcwYWRjODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5t
YWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0Vf
REVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVu
dEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFn
ZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9y
dCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJh
MGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li41YzM2ZjkwODM5NjMyZjc5OTQ5ZjQy
MmE0OGFiODczYjEyODM0MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
OTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODczMWViODJjYjhlZjAx
YWQzYjE0N2Q5MDA5MWU5OGY5OTI0YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRT
aXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAt
MTA3LDEyICsxMDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVy
aW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAg
IGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5r
KGRhdGEpKSB7Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChk
YXRhKSB7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0
ZDRiOTEyMDAwMi4uZGU3OGFjYjIyMTBhMWZmNGVmYTk2YzA1Zjg0OTE5YjI2NWQwMWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05
MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQo
KQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRp
ZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNh
MjUxODEzZTZjMDM1YmMyNzguLmNjZTU4MDFhZWM3ZmM3NzhlOWZhYTg1YzExZDRjMTcyOTZmZmU3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyAr
Mjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRl
c1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50
Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3Jp
Z2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgog
ICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAi
dGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4Mzli
NzA2YTBiMWIzMzFmMmM4MzkuLmRlNTdmNDA0MDM3MjRjNTM2YmE5N2IyYjZhMDYyZWNhZjY3NDYx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1l
IGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVu
dC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9z
ZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRl
bnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkp
OworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThl
ZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uOWNmMDQzNzE5NGE4YTJmY2E1
ZTUyNWM3YmZmOWZlOGU5OGE1MGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAg
ICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUg
ZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRD
b250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJv
cigpOwogICAgICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAgICAgICAg
IGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFmaXJzdEZvbnRGYWNlKHJlbW90ZVVS
SSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChhdXRvIGNvbnZlcnRl
ZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpKQot
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFs
dWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKaW5kZXgg
MzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNi4uYTE1ZWFkMGUxNjQwOTAy
N2VmOTIwNGViOTMzYjRmMDU0YzM4NTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9u
dEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZHRm9udEVsZW1lbnQoY29uc3QgQXRv
bVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFjZUVsZW1lbnQqIGZpcnN0Rm9udEZh
Y2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fY29udmVydGVkRm9udDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9leHRlcm5hbFNWR0Rv
Y3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQ7CiAg
ICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThm
NzllMmNkZWNlOWJlNDE4ZjE3YjY1Li5lZWRiNmIzN2U0MjIxYjhmOTgyNjk0ZWIwOTZhMDI5ZmQx
YjgxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cApAQCAtOTgsOCArOTgsMTMgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
IAogdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgx
NTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uYWIxNzExNDQ0NzdkNjQ1ZTQxNzg1
MmVjNzFmM2IyNDcxOWEyYTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQ2FjaGVkVGV4dFRyYWNrOjpD
YWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQKIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmMxNzBlNjA0M2Y0OWRjYTAyNTlhNjNmYzI1ZDg1MmRhNmIxMWZkMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYzLDEwICs2MywxNCBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEp
IHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVj
Li5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0z
MiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2Uq
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlz
a0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNr
aW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwg
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
ZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0ZjAzYmEz
MTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2Un
bGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdl
IGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRv
clRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9u
c2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWRE
YXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0Nh
Y2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVN
b25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tl
ZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNo
ZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNz
aW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJj
YjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmMzdkMDU5YjBl
YjUyNmM1NDljMGQ3ZGViNGVhNWEwODgwZmYwZDhjLi42ZDUxYzVlNTE2YTNkYmZiYjc0NzZlZDk0
YjA0MWU2ZTU2ZjczYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3
aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdp
dGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9j
dW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJl
IGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uZDc1MGNmZjk2NDIzMDA1MmY3
OTk1YTI3ZTg4NzI5ZDJjZGU4MDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHRl
eHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKLSAgICBtX3Jlc291
cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxp
bmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVu
dC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9
KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6
IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVl
biBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRleHRF
bmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwog
ICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3Vy
Y2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsK
ICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAtMjgyLDcgKzI4
Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1h
Z2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFn
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MS4uYmZj
YmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJl
c291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6
ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNjhiMGRk
MmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFiYjI3ZTUwZmRmZGZh
Y2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5n
IGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uZDY4MDVh
M2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwotICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkp
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBl
bmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwotICAgIAorCiAgICAg
aWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9h
ZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKICAgICAg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXll
ZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCA3
OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgwZDdhMWQ0MjQ1ODUy
MGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXll
ZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYg
a2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0
MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZl
ZTdmNzk0OTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsNiAr
NjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CkBAIC04MiwxNCArODMsMTQgQEAg
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVi
b2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CkBAIC0xMTksMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAjZW5k
aWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZsb2F0
U2l6ZSBpbWFnZVNpemU7CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
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
MWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIyYy4uYTc4OGZiNzMwZWRjMWMz
ZWZhZGU4NzBhNDAxMWY4YzRiYmFjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRh
YmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4
Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAg
ICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRN
TEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2
ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uYmE2ODFmZTA1NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMy
MGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JU
eXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwpAQCAtOTMsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCAxZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNj
NzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQ
cm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25h
bERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1
NWI5YWZkMzkwMDM1MzUzODVkLi41ZTI1YWUzZTQ4MTE2YWY0ODQzOWMzZmYyMzhlZWJkNDA1ZTVh
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmls
ZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpAQCAtNjQsNiArNjQsMTEgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBh
cHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKK30KKwogI2lmIFVTRShHU1RSRUFNRVIpCiBSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQog
ewpAQCAtNzMsMjYgKzc4LDEwIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERh
dGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYK
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewot
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0g
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAg
IH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBh
dGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiB2ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
CkBAIC0xMDMsMzAgKzkyLDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFz
c2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcg
YWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGht
cyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQg
PSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAg
IHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAq
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0xODEsNiArMTU2
LDIxIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplOworfQorCitib29sIFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgU2hh
cmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3Vv
dXM7Cit9CisKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsK
QEAgLTIwMiwxMCArMTkyLDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDIzICsyMDMsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CkBAIC0yNDMsMTcgKzIzOCwxMiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIGNsb25lLT5tX3NpemUg
PSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdt
ZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHtlbGVtZW50
LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgY2xv
bmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBvc2l0aW9uLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+aW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hh
cmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBt
X3NlZ21lbnRzOwpAQCAtMzU1LDggKzM0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAK
IGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKKyAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVE
CkBAIC0zNzIsNyArMzYxLDU3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShk
YXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
IG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sK
KyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykgewor
ICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdT
dWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgp
OworfQorCitjb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29u
c3QgY2hhciogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZp
c2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAt
MzkxLDcgKzQzMCw3IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBw
ZWRGaWxlRGF0YSgpIGNvbnN0Citib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKIH0KQEAgLTQwMiw3ICs0NDEs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
fQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KQEAgLTQ1Niw3ICs0OTUsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTYg
KzUzOCwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRh
dGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBk
YXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAt
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uNTlmMGNhMmM0NmMwMzIyMDhi
Njc4ODMxYzI0NjFjZjFjYjAyYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKQEAgLTYyLDE0NiArNjIsMTQ2IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBX
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
bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyNpZiAhVVNFKEZPVU5E
QVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBj
cmVhdGVDRkRhdGEKKyNlbmRpZgorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3Ip
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1
ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAg
IC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEg
ZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMTAs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRW
ZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKLQorcHJpdmF0ZToK
ICAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0
b3I8dWludDhfdD4gdGFrZURhdGEoKTsKLQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
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
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2
OCwyMSArMzE1LDIxIEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0OworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIz
NmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcx
OWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBA
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJy
ZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYm
IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA0NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45YjNlY2ExYTE1NDQ5OGMwZTdlMzRj
N2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNG
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQog
ewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJp
bmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThh
MTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZj
YjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC00MSwxNyArNDEs
MTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewog
ICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+
PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAg
cmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNl
Z21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0
YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXpl
KCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZm
MjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLjZmNTBmMDM1YWRmZWFhOWRi
YWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5
cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2
OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLmYwZTJjYWI3ZDgwMTM2MDI3NjkzOTI4MTk2YTVmY2E3
ODE2NzVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNE
YXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
KyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAg
ICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEs
NyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3Np
dGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05OCwyNCArOTgs
MjIgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRn
ZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VS
VChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxl
OmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNl
RGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
b3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNCw3IEBA
IFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3QKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJi
MDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYx
Nzc4MDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFz
IEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpz
b24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGEx
ZmVhYjVkZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAg
ICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAot
ICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5p
dERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250
aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0
RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hT
aXplID0gMDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAg
ICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXRE
YXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGln
dW91c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
QEAgLTI0NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlk
RnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBm
b3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoK
ICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQg
b2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVl
bmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNp
emUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7
CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwog
ICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTgu
LjdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXko
KQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBt
X2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2Vm
ZTQzNWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2Iz
MjZkODdiMjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChj
b25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQyNGMxMTkzZjhlNWM3
MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUy
N2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xp
Yjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGlu
ZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92
YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRh
dGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlLi5j
ZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4
OWZjMDVlMjguLjc4ODkxN2RhZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApA
QCAtMzgsMTYgKzM4LDE2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdCeXRlcyogYnl0ZXMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5
dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBh
ZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdw
b2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAg
ICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3
OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZlM2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBs
YXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9u
RmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkpOwogfQogCi1S
ZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEp
CitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3lu
dGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250
RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQo
KSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
aW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZjliYWNhNWEy
NjQxZTM4YzgyOTQwMGY1ZTMyNTRkZmVkNDhkYzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZv
bnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+
IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6
Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
b250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRi
MjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBA
IC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Ly8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5v
IGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAg
IHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFj
ZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7
CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVl
MjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0
ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBN
b2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUo
dXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5n
IG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1f
dXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4
OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
bV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAg
ICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KQEAgLTkz
LDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1v
ZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUo
Km1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRl
eCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNi
M2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09G
MiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFk
VUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29m
ZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jv
b2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkp
OwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkg
PT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBp
ZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAg
ICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252
ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRl
eCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRk
NGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09G
RiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3
b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhh
bXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0
dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNv
bnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwg
VmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdP
RkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhl
IGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhl
IGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEz
ZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsK
LSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3No
U3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwog
ICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRT
ZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgp
OwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIu
Z2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAg
ICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtl
eVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNl
Iik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBG
SVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2Fs
bCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFj
ay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAg
ICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRl
bnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Np
b25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFu
Z2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlm
IChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0g
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7
CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5m
aXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDph
cHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdl
dCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAg
LTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1f
aW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBS
ZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRh
aW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2
LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBl
bnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9
IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3RE
YXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5n
ZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RK
U09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsx
MjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVl
c3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0g
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdh
dG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVx
dWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWEx
MGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3
ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9h
ZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXRE
ZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0
Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0g
ICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNl
aXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJl
MjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVu
ZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRl
V2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAg
IFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJl
YW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBh
MjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5kZjYyYjNkNzM2M2VlZTY5
ZWVlMjcyMmE0Y2QwNmEyZGE0OWE2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmUKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQog
CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzgsNyArMjM4LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1
N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3
YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNh
aXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlh
N2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3
ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVk
U2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkK
IHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVk
QnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUo
KSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9
IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAg
dm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8g
Q3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRh
dGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdl
dEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIg
b25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0
byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3Qg
bW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0
ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJv
dmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
biwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0
YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNv
ZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0
MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBE
RkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3Vt
ZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRl
ci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFl
M2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4
NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAt
NTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2Zv
bnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5
ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQq
IHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5
MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCAr
MTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZv
ckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNr
KGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihD
VEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlv
bnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZi
NGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0
Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJy
YXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJh
MmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAx
ZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFy
bWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBm
dF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9
IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJM
RShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAwMTYwNWZj
OTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4ZmRlNjY5MjRkNDJiYWFj
MzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDIy
LDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3Rv
cigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9v
bCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcx
YmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRjNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWludCBtYWpv
ciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZl
cihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUw
NjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwot
ICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIs
IFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAg
ICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBb
dGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklu
bmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRl
Y29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1
OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIx
MDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRE
CiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5
cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3
ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRh
LnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAx
YjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRh
dGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsK
IH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioq
LCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0
LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2Rl
KHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNz
aCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3Bv
aW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0
RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gs
IG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5
bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQz
YTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAg
SW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBw
YXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXls
b2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1
b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0K
IApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4u
NTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0
YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5k
ZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5j
cmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMx
NWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5
Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRp
b25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpp
bmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZh
OGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3Vu
ZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhj
ZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFl
NGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
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
LmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZk
MzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRo
QnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4g
bV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFh
ZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4
NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRl
ZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtF
X1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgo
dWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWlu
dDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNv
dW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90
IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVv
ZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAg
ICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQg
PD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxp
ZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3Rl
ZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3Rl
ZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVP
ZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3
LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxF
KE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2Ugewog
cHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBj
b3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAg
Y2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3
YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRk
aW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnRE
YXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUK
IC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkg
cmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9y
aWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciog
c2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEo
KSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8g
UmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5
c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9u
dChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2Yu
LjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUx
Mj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0
cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJ
bnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0Owog
Ci0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZl
ciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2Uo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxp
ZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsK
IAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRh
YmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5U
eXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJp
YWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAg
Ym9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJU
YWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZz
ZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJs
ZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIw
OCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhb
MV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBs
b29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29r
dXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7
CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRl
eCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJs
ZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBl
OjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBm
ZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3Qg
TGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3Vu
dF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNS
ZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3
ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAg
c3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBz
dHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAg
fQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0g
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3Jp
cHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVh
dHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0
PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1
cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNU
YWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0
KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBA
IC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFu
Z1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAg
IH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJv
b2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJl
KE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNh
bEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVh
VGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxl
PihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0
LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBm
b250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2
aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxl
KiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBk
MjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhi
OWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRh
OjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5m
NGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVV
bmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNw
cAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0
NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAg
ICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTEx
MDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEw
NTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCAr
NTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZP
TlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
c2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7
CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9J
RClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9u
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBj
ZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0
MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNl
ID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1f
Y3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsK
ICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRh
YTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2LDkgQEAgcHVibGljOgogICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAv
LyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4g
Y2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2lu
KCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0
NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRl
NmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21h
cmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBt
YXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogfQogI2Vu
ZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQot
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0
OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4
Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyAr
NjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRh
dGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxNjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li41YWQxZjZmYWM0
YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwx
MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
UGFzdGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50
LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRl
bnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7
CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFz
c2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURh
dGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3Ry
aW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAg
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFz
dGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0
YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAg
ICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAK
LSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1h
Z2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVk
TmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BS
RVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0
YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6
V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFz
U2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Yg
c3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50
cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0
aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4g
dGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdl
IHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVy
biByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWlu
ZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uZmQ1N2QyMjJjMmQ3NDMwMTYxMTYy
YzBlMmI4OGU5ZjFjYzMxOTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAg
IAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAg
ICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAg
ICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmlu
ZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQz
NzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0
ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdl
YkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlw
ZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNv
bnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVz
W2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsK
ICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7
Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07Cisg
ICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9V
VElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMWI5MTkxNGUz
ZjcyN2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVz
XSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2Rh
dGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVi
b2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRU
eXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9h
cmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewot
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgp
KTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQ2
LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBT
dHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJk
VHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgp
OwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsK
ICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bh
c3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGEKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRl
eCBhMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjLi5iMTc0OTc0NDU0YmY3
Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9y
bURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewog
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVt
ZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Js
b2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CmluZGV4IDZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDguLjQ2ZTI3MzUz
M2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3Mg
RmlsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5
LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYg
ZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdh
eXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4
MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTky
NTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0Yzlh
ZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2Rh
NGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAg
LSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAh
cmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFk
ZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRh
ID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2Vp
dmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRl
PiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxm
LmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0
YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRm
ZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8v
IFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAg
bV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9z
dGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBu
b3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhl
IHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXpl
KCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wg
Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hl
Y2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFy
eVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJv
dW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4K
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBi
b3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBw
YXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7
CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5s
ZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNk
ODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAs
NyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93
bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
Ci0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2Fk
RmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5
NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgx
ZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChj
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBm
YjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5
MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
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
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5hNGUwYWIz
OWI5ZDY2ZjYwZmZkM2JjNzYzMDI2MGQ2MWMxZjlmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUgQEAg
dm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtl
ckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0YSkg
ewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmlu
ZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAg
ICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3Vv
dXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICAg
ICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEs
IG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVk
Yjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9p
ZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRj
aFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwog
ICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewog
ICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1E
YXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGll
bnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlk
RmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjEx
ZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBA
IC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2Vz
IHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygq
ZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVk
QnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxk
VXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdl
OjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBk
ZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3
OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRv
Y0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4
NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1
bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7
CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIz
YTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNk
NGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0
byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBw
b2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3
Mi4uNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVx
dWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXpl
KCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uu
c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1
ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShi
dWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJh
Y2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXgg
MWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRkMzgz
NWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9p
ZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJv
ZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZm
MjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAK
ICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBt
X3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0
NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJ
bmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNv
cmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZd
KGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0o
Y29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAg
c3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3Jk
JiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNv
cmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0g
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFn
ZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJv
ZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4
IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdm
NmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCAr
MTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkg
Y29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5
ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVm
ZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0K
IAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBiMjBhYTUxYTBmODRmOTVhZDhmMGI3ODA3ZDc0MTcx
YWRjNTIwNWEzLi5mNjMzZmZmZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3Vs
dD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJM
UmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1
dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5j
cmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5w
dXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVz
KGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXgg
ZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFkN2U2ZGM3NTBl
ZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAg
ICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEw
OGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4MDJhYzkw
NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAg
ICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNvcHko
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJD
b3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQo
YnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3
YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29u
c3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9
IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhf
dCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90
ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4u
NzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNp
Z25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBw
cml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJm
OTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVz
b3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxl
YXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2Jh
MjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBz
byB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQu
Ci0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUo
KS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
ZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0MzZjMjUwNTIw
ODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVs
ZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRh
dGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3
N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDcz
NTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0s
CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7
IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFlZWUwYWQ2MmNi
MzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3
Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwog
Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1l
bW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAg
ICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIy
MGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFi
YzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVy
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4
LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwog
I2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBl
bmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNv
ZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVz
QW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBl
c0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDEwICsyNjEs
MTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlw
ZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsr
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQo
YnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3Bv
bnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0g
ICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9k
eSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVj
b3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBA
IC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMw
MTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1
ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAg
ICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRl
Y29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2Rl
YjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRl
bnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpA
QCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5
Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIw
M2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9u
RGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21E
YXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1
c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5
NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZk
ZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFs
PEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25E
YXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICgh
Zm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2
M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5
MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2
YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0
N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1Mg
TlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkg
eyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhh
c0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzZhNmY0ZmIwN2YwYWI5
ZGRjN2E0NjE4ZmVkNDIyZWMzODk3NDAzNS4uMmY0NDhhNzYzOTI3ZTAyZWNjMTU5NzU2MDJjOTAx
YjcxOWExYTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVtcGxhdGU8
PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8
PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQog
ewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRk
YjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBA
IC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICBy
ZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
IHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcw
LDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6
ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZv
aWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RG
OjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjNGVlNTI1MDc2NDJk
YjRlNTRjZmFkZjdmZWUzYmYxYjdjMGQzZDNjLi4wMWM4MTAyNzhlZjYzNTkxNzJmOGU2NWI1MmNm
Y2IwYjUyMWI3ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxp
Z2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdo
bGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAg
ICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5p
dFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
dGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtb
X1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxp
Z2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1h
Z2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hs
aWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09
IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdo
bGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4
MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRkZjNj
MjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6
ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEs
IHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURh
dGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0
aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRh
LT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRD
dXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcwZjZj
NTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWRi
ZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJkNTcwMmI5YzdkZGNkNmM3
N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICBp
ZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlvbnMoJnJlZ2lz
dHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11dGFibGUgewor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJl
Z2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRh
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMu
Z2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
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
ZVByb3h5LmgKaW5kZXggNWE4MzJlNTVhY2JhMTg5YjM5YjllODk3Y2MxY2ExOGI3YjQ4NDU1NS4u
OWZmMjNhODY2ZmYwZDg2Mjc1MTg1YmY2MjlmMWE0NzZjZjRmZTZkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQwY2Q0
M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0
aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNE
YXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9IHsg
bV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNTYw
NzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcwZWYx
ZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4Yjli
NDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJm
YjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9d
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRv
TGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0
KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYTgxY2NlNDQ1NWViMWE3
MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEz
NGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyArMzgyMSw3IEBAIC0gKEJPT0wp
Y2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2Vu
ZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEg
KmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdp
bikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NTk5LDcgKzY1
OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihV
SVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQo
KSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsK
IApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyog
ZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmlu
ZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZp
bGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsK
LSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBzaGFy
ZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3Nl
bGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6
Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2Yy4uYmE5OTVm
YjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1
OThkYjQ2Li5hN2ZiNGFhYmNmNzRkMWJkNzI5MmMzMGFmNzcyOThiYjk0MGRkMDBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3
ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVlMjA5
MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVy
dGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50
RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4
NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZl
MzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAg
LTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21f
Y29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9h
cmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8
V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAg
ICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0
KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVy
IHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5n
ZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlw
ZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAg
ICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5
cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4
ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJh
NGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAg
ICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3Jl
YXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkg
ewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFw
cGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJy
YXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRh
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5
ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3
YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdl
JiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENo
YW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
UGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJD
b3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3Rp
bmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgw
YTQ3YzE3MWUzNDE0NjhjLi5lMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVs
ZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAg
ICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihj
b25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAg
IFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAg
ICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVX
aXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIp
OworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciop
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVh
c2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1f
Y2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwg
dG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5n
TmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4
OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNm
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJh
MzlhOTg5NTVmZDQ0MzAuLjhiNTgyMTE0YjkzNWIyNzI0ZTllYWQzM2Q2Y2E0MmNmZGYxMmNlNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1
OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcx
YWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2Vu
ZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYg
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
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRk
OWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VC
dWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxl
OwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAg
YXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAg
ICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFk
NDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRj
NjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFi
MDczZTFiOGMyNWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1
MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUp
OwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAg
IHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhB
VkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
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
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThh
ZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUy
OTdiMWQxNzlkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
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
bmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJlZEJ1ZmZl
ciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0dXJuIGVu
Y29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNv
cmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBj
b3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0
YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9y
eVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxN
ZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5
NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBA
QAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+
IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0p
OwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxP
TkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5
MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZl
OjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0
YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEu
LmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUz
ZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVh
ZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcg
KzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElT
dHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5F
WFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBN
ZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRh
dGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVw
cmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
aW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5
YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291
cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAK
LVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
bWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVl
MzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMz
OTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGQxMGZjMmZmZWIyYjVkYmEwYzUxYjJiYWE3YzVhY2M1ZTBkNjg5
OGIuLjBjOTljZDc3Mjk2Y2U2YjUwNTQxYmNlOWEwNGUwZjJiNzE4YmY1MTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMg
b25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisK
IDIwMjEtMTItMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gV2ViIGNvbnRlbnQgcHJvY2VzcyBzb21ldGltZXMgY3Jhc2hlcyB1bmRlciBX
ZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRm
YWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uMWI3MzYzYTgyNzI1YzczODU0ZDQ5OTY4NDAzYmMwZmE0
NTRhNjc2NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKQEAgLTQzLDM4ICs0MywzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3Np
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7
CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmco
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAg
IEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXIt
PmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXIt
PmNsZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4
MywxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRp
Z3VvdXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
dGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIs
IDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRh
KClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTE1OSw3ICsxNjAsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hh
cmVkQnVmZmVyLT5zaXplKCkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hh
cmVkQnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25l
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBA
IC0xNzUsMzAgKzE3NiwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZics
ICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wn
fTsKLSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsK
KyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Qu
c2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAi
Z2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAg
ICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIo
aWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRh
dGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1
ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRh
KCksIGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6
ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFz
Q2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9
CiAKQEAgLTIxMCwxNSArMjE0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IGJ1ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7
J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdi
J319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7
J2EnfX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
LCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAn
YycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScg
fSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIx
MTAuLjg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446118</attachid>
            <date>2021-12-06 21:44:09 -0800</date>
            <delta_ts>2021-12-06 22:27:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211207164406.patch</filename>
            <type>text/plain</type>
            <size>414255</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uYjFlNTI1Y2NmYTZhMzI2MzU3YTJkZGVkYWNkMWE0
NjBmZWQzZGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGVuZCBiaXRzIGluIHRleHQgYm94IGl0ZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDcxNzk0NzVmN2RmZDA4ZjE0OGQwMjU4N2U0MGNmZDU5YjAxYWE4ZGEuLmQ5
YzcwNjhmYzAyYWQ1YWQ4ODhjZjI0ZjI2MWViMDI0MThlY2E0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJD
b3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6
CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQ
STo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjpl
bmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hs
aWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRl
cjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRX
aXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVG
aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
YWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5
IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9y
IEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uZjgwOGU5MDVhYmQ1MDJi
OWUyOTAzOTYyYzE0N2Y1OWQ3OWJkM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVu
Y29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sg
dXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uNjNkMDAy
NmYyYTY3YTdkZTUyNDE2YjlmYWMzYTgwZjlkODRhYjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06
Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRh
dGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2Vi
IExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5
ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4
MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAg
ICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0
byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0
MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRi
N2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUg
PT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXBy
ZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNy
ZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5
Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTky
OGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9w
bmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBj
Z0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhp
bnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtb
TlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAg
ICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJm
ZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVS
ZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVz
dWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsK
LSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4uNmU1YzQ1NjRk
NWM3NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJl
c3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0
NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQz
OGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+
JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5n
IFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVj
dG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgw
NGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRm
MmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAg
ICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUg
YW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVz
cG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkg
Y29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+
IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAg
fSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
KyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1
OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1
NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5
Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENh
Y2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1Zh
cnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0
IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNp
bmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVk
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9u
c2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYu
LjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsK
IAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlm
ICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046
OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZh
bHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5
LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtp
ZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVj
dC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3
NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcx
OWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7Cisg
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRh
KCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZm
ZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFL
ZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3Rh
dHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
cGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+
KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFm
NjA5MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCku
YXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBi
bG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVy
biAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURh
dGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxT
ZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVm
ZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJl
NC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVz
aW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJl
ZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXgg
ZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTI2YjUzODQ4YTk5MDlk
YzcyNDA5NzFiNDQ3NmRlMGJlMGUwYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAg
ICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAg
YXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
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
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkx
Y2I4NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGMwODc4NWFmOGZjOTI0ZTM1M2ZmZDQ4M2RmN2I5
NWRhMjQ0M2FlODQuLjllOWYyOTQ2NzJmM2Q2MjI1MDNiMWU1NWIxNzk2ZjBjYTFlY2ZhNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMz
ZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlv
bnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAo
YnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3VyY2VE
YXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpAQCAt
NTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNk
Y2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBj
b250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNo
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVI
ZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVk
RGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVI
ZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3Rl
ZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1J
TUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
Ly8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3
ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMg
NSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1
NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVy
YXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0
NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEw
YmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAg
ICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBk
ZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBh
IGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChk
YXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAv
LyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBp
bW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdm
NjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4
NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hh
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
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1
NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBA
IGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+
Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAg
IC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5
c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAg
IEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1
NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7
CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91
c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2
aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQy
NWNkZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5kZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVm
ODQ5MTliMjY1ZDAxY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpD
YWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQog
ICAgICAgICByZXR1cm47CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgq
bV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVh
cigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsg
bmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2
MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5
ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VF
bmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRz
LgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2Rh
MTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZi
YTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8g
dGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJl
Li45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2Fi
bGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJv
ciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZp
cnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAg
ICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5
MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdG
b250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNl
RWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFi
OGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5h
YjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEy
MDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBj
ZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRl
OgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsg
fQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBl
NTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
QEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBk
aXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRv
dWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNy
ZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcg
KzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9u
c2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tU
b1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdp
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
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3
OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4
LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4
ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLjlhYzU0MWQ1NDY4NGEwODU3
Zjk4ZTliZWFiMjQ4ZTM5ZTM3MTAxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9y
KSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9z
aXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVm
ZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgm
bWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsK
LSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBh
dGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5n
U3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0K
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBz
ZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1v
dmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNl
IHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRp
Z3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5j
b3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YSht
X3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkp
fSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50
LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpj
b3B5RGF0YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSAr
IGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NF
UlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0
b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsK
ICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUt
Pm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
e2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAg
ICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9z
aXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5p
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQog
dm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdt
ZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYm
ICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtd
KGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdM
SUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikK
LSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11
dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
e3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19Owot
fQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90
aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTEz
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQo
Y29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlz
RW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlm
IChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1h
eVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxl
TWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGlu
Z1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBp
ZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAg
cmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4
X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFT
ZWdtZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlu
a1RvRml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOworfQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6
Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVT
RShHTElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFT
ZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdt
ZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKwor
Y29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYg
VVNFKENGKQorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwK
KyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgor
I2lmIFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsg
fSwKKyNlbmRpZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVy
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOwor
ICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jv
b2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiht
X2ltbXV0YWJsZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9
LApAQCAtNDc1LDcgKzUzMyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURh
dGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQog
ICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXpl
IDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYg
KzU0NywxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29u
c3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0K
LWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0K
LQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsK
KyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAot
ICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAg
ICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhl
IGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
QEAgLTUzNCw3ICs1ODIsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMy
ZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uZTljODUxYTEzNTVjOWFlNmI0MjUyYzY3NTA5
NjNlNDNhMzFjNjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAg
LTYyLDE0NiArNjIsMTM4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRh
U2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQg
Ynkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxv
Y2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxl
TWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3Jl
YXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFy
cmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEg
Kik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRh
dGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdC
eXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYg
VVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAg
ICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNv
cGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0
ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAg
Ly8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxh
Y2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8
dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29w
eURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFk
IHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBW
ZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlC
dWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAg
ICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBh
IGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOwogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7
Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3Zp
ZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAg
RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3Jh
cHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4g
YmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21i
aW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAg
IHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVT
RShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFT
ZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQot
Ci0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0g
ICAgICAgIH07CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYg
VVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkg
Y29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAg
ICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAg
ICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERh
dGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0Rh
dGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAg
ICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
Ci0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBT
aW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhl
IGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNo
YXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVh
dGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50
cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBi
dWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgdXNpbmcgRGF0
YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21w
YXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3Ry
dWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlv
bjsKQEAgLTIxMCw1NSArMjAyLDEwMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRW
ZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21l
bnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21l
bnQoKSBjb25zdDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0
aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
IAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtl
Q29udGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwor
ICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEs
IHNpemUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENG
RGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdC
eXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVf
dCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0
OwotCitwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZl
Y3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsK
IAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAg
IG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFC
TEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgog
fTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQg
YWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQg
cmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBT
aGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
RW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBp
dCB3aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lk
IGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Cisg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4geyB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9IH07IH0K
KworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
TWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKK307CisKIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQpAQCAtMjY2LDIzICszMDUsMjQg
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
N2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0
MzcwMjliMjZjNWIzZGQ1OTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsMTcgKzQxLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFu
IGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8v
IHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShG
T1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkg
eworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBz
dGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+
bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAg
YXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgp
KSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIs
NyArNjgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFt
X2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5k
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
eS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgy
OThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7
CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91
c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0g
Y29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0g
aW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBw
c3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDggQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQK
ICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQogICAgICAgICByZXR1cm4ga2V5SWRzOwog
Ci0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJ
bml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNv
bnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBU
aGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJl
cnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVt
ZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBz
ZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0
YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUo
KSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkp
KTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEw
YzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFy
cmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGlu
ZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIo
KSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1Yzdl
ZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgz
OTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVu
Y29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJv
b2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4
ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0
ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2Rl
ckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5j
b2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0g
Jm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3Zh
cmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVz
PiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYy
ZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJl
MjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0
ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVz
ID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBb
XShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRh
dGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7
CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCks
IHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5
MDc4Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9u
dChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRh
dGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0K
IAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0
YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9s
ZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxE
YXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNo
ZUZvclZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9t
Rm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEu
Z2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmY5YmFj
YTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBW
aXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9y
aWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNp
YmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVu
dGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9u
dD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
LCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
b250PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0
ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVk
LCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSku
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAK
ICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4p
CiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFj
OWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJl
MGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZN
b3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2
MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywg
VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2Rl
bD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0
YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7
CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBA
IC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgq
bWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
aW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2Yz
ZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8g
IndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0
YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBv
ZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQg
PCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMy
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2
YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0
dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0
eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6
ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcg
KzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAg
ICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsK
KyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgK
aW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2Fm
ZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZp
bGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9y
IGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNl
IHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdv
ZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMg
YSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9y
dCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8v
IHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3
YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQt
ZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJm
ZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVu
dHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYg
KGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkp
Ci0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlm
aWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQog
ICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgp
KSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNP
TlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyop
cHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmls
XTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBp
cmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5n
ZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwor
ICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNw
b25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5k
IGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2Fs
bGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tT
ZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
Y2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9u
UmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNp
bmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAt
MTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1
dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5
SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1
ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5
SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxv
YWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIs
NyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byBy
ZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkp
OwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2lu
Z1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUx
YzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0z
MDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3
ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29t
cGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNl
aXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRh
UmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5
MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjph
cHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBz
aGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJT
dGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAg
ICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFW
U3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZGY2MmIzZDczNjNl
ZWU2OWVlZTI3MjJhNGNkMDZhMmRhNDlhNjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPFNoYXJlCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsK
IH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzOCw3IEBA
IERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJM
RGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3Jn
aXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpk
YXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAg
bV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQt
PmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
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
U3RyZWFtZXJDb21tb24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFj
Yjg3MWJlLi5kMDE0Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0NAot
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
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBm
OTFjNTk3YWE5ZjkwMDk3YzE4ODMyYzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZhNDVi
ZmFiMTAzZTBhMjkwZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
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
aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uN2Ji
Mjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAog
ICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1f
cGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAgICAs
IG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKICAg
ICB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291
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
ZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNm
YmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZl
ZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAn
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19k
ZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3Nh
dmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2Vy
ID0gbWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAg
ICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0K
ICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNv
ZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENN
UykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2Zh
NmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgz
ZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4
LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50
YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3Jp
ZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2
ZmFjNGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCAr
NzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBh
c3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0
YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29u
dGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ld
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQu
Y2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNo
aXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9m
Q2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZy
b21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwog
ICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9S
ZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVu
dERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAg
ICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUp
OwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZv
clR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdl
LmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dl
c3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9S
ZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JU
U19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Q
cm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQog
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRh
Lmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0
IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0
aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29u
dGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBi
dXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250YWluZWQgd2l0
aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUg
cGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzMsNyArNjczLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICBy
ZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdl
cilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAg
ICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJ
bmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFz
dGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3
N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2
MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3Jh
cHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSld
OwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcg
QEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3Ry
aW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9y
VHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRl
Z3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVn
eSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cK
ICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJl
ZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVn
eSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7
CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsK
ICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAy
NTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2Fy
ZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5T
UGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0
ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVu
dFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRU
eXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURh
dGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmln
aW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCld
OworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5
MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIg
KzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0
eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJv
YXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5T
KFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3Rv
cjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJv
YXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0
ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0p
IHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsK
KyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5n
ZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0
X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYg
ZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwog
ICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwog
CiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJp
YWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAg
ICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZv
clR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAg
LTM0Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3Jp
dGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
KyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5
cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0
aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVi
b2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGlu
ZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVd
KSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1
c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
aW5kZXggYTM3YTBkODc0ZjcyYmY5MWJkNTJjM2FjNmI1ODVkMzMzZjBmY2EzYy4uYjE3NDk3NDQ1
NGJmNzM5ODkwOWNjOGJlYTRkMGEzYjk1NzlhNzg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90
IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5C
eXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVy
KCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFy
ZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMp
IHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4o
ZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6
YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUy
NzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNs
YXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAg
LTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVu
dD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBh
c1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wg
YWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgx
OGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUs
IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAg
IGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgz
ODE5MjUzNjk0YWEuLjg4ZGVkZmE0NWMzZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAo
bV9tZXNzYWdlUXVldWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFi
NGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAx
NDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3
IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lv
biBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNS
ZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxl
Z2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25n
U2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2
ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5
MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1
MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
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
cXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEu
LmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAt
NzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmICht
X2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRs
ZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3du
bG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4
ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZk
MDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBp
ZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNo
ZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRl
eCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMwMzE4
YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1Jl
YWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXgg
YzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uYzQ2MGY1ZmE0MGRkYTIx
ZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTg2LDggKzk4Niw4IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5
TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlm
IChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxv
Y2sobWVtT2JqKTsKIApAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRl
R2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFy
ZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAg
IERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7
Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVk
ZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
LCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0
ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAg
IENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNj
ZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2
NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRl
c1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJv
ciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAg
ICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQg
PT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdl
dExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9y
KCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
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
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uYTRl
MGFiMzliOWQ2NmY2MGZmZDNiYzc2MzAyNjBkNjFjMWY5ZmJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1
IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3
b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAg
ICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2Rh
dGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAg
ICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250
aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAg
ICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNE
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBk
ZWQ1ZGI3NzYzNTRlNTI0MC4uMGJjZDk3NmVkYTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8
RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHko
KTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShm
b3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAg
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQt
PmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNh
NzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJp
ZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBj
YXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBp
bmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNo
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNo
b3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpN
YXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3Rv
cmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5k
ZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUx
NGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0
ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBp
ZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAy
MmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2
NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9w
ZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9y
OwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAg
ICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1
NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQx
YmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDgg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEs
IGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRh
dGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNl
IHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRi
MDlkNzIuLjU3N2Q2NTZlNjdmY2NhNDY0MDUwYmZkMzRkYWRjMmEzNjI1ZTIzMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+
c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3Bv
bnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmlj
cz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYw
MDU1NWY1NzIxNjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVk
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1v
dmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNh
bGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmlu
ZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRk
ZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAg
IHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9k
eUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9k
eShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYy
M2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0
NDM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAg
fQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3Njcmlw
dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2
ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDll
Mjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBT
dG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVj
b3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24o
cmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9y
bURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0s
IFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
cmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9k
eSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0
b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFn
ZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApp
bmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBm
YTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAx
LDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29y
ZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAg
Ym9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmICht
X2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAg
ICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3
NDE3MWFkYzUyMDVhMy4uZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5MWQzMWNhOWUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpS
ZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0
YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAg
ICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEp
KS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBt
X2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9i
eXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmlu
ZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRj
NzUwZWYxOWYzMjg2MmM4OWI3MTg1ZTAzYmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0
aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAy
YmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAy
YWM5MDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaApAQCAtMzksMTggKzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGlj
OgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJD
b3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVm
ZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHko
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZj
YmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6
ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUy
YWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVy
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgog
ICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMg
dW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsK
IAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1
NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgs
NyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNp
Z25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2
ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBt
X2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4g
cmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5
ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwog
ICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0
eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5n
IGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZh
bHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFj
ZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xs
ZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmlu
ZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1
MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBv
ZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0
aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAy
YmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMw
ODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgp
OyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6
ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291
cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFk
NjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2Rl
ZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUm
KTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFy
ZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwog
CiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0
YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMuLjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIy
YzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
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
bmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2
MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNv
cjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4
MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4
YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVj
dGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3Vz
dG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5z
ZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAg
fQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1
YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAw
NmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJD
b3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRp
b25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBs
YXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0
aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUo
KSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURh
dGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBm
b250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3
MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYy
NjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lk
IEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIy
ZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5
YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NM
QVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9v
bCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmll
ciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdm
MGFiOWRkYzdhNDYxOGZlZDQyMmVjMzg5NzQwMzUuLjJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAy
YzkwMWI3MTlhMWE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBs
YXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRh
LCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1w
bGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBs
YXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlv
bikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2Mu
Ljk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAg
ICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNv
bnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAg
LTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJp
YWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQog
Ci12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3
NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjVi
NTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhp
Z2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAo
aGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwog
Ci0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2Nd
IGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHRO
UyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0Lmhp
Z2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0
IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBI
aWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91
cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmln
aW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6
SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJj
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
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0
YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3
Zjc5N2I0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAg
ICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5
U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJp
bmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3Jl
OjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3Bh
Z2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsK
ICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZp
bGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1
cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsK
LSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgp
XSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwog
ICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVz
T2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewot
ICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpO
U0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ1ODQsNyArNDU4
NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxlRE9NUGFzdGVSZXF1ZXN0
V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0
dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQuZ2VuZXJhbFBhc3RlYm9h
cmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBl
KCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIp
IHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKE5T
UGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0
MDkyOC4uNTUxNjY2NmM1YTMxMTcyYzk4NmUzMmFiZjNjNmIwMWQ0NTZmMzZhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlz
Q2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRD
aGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNl
c3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDVhODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2NjMWNhMThiN2I0ODQ1
NTUuLjlmZjIzYTg2NmZmMGQ4NjI3NTE4NWJmNjI5ZjFhNDc2Y2Y0ZmU2ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDcgKzExNzksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3
aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RS
ZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25k
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApp
bmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2Zk
MGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4
Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9z
eW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEg
PSB7IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6
ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2Us
IGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4
IDU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMuLmU5ZDIzNjkzY2RjOWE3
MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2FhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJw
cmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZl
bnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tl
cihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAzMmQxZjg5YzA1
OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiLi42NmFjNGNhYThjODMyYjNkYjUxODk3OWIw
ZWRiZmI2MTY0NjRkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTpp
bmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7
CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRh
LmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWE4MWNjZTQ0NTVl
YjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYS4uMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdh
YWZhMzRjZjdjMzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChC
T09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlk
KXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bh
c3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNE
YXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRP
cmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3
ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmln
aW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVu
Z3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlm
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIu
Z2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4g
Tk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6
KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAg
ICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJp
bmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNT
dHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRo
ZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4i
KV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAg
c2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAg
IFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRS
ZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IGY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMuLmJh
OTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBA
IFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFi
NjZiNTk4ZGI0Ni4uYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYyAxMDA2
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
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
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRk
OWMyZDIxLi40YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VC
dWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxl
OwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAg
YXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAg
ICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1l
bW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFk
NDI3YzBiMTdiZjVlZDEzLi45MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0zNDMsNyArMzQzLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRj
NjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLmYzZWRjMjkxZmQ4YWFmZTNkYTgzMGYwZDA0
OGQ4YWU1ZTgzNmIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYy
NjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4
MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRh
dGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3
SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgp
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcg
KiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVm
NjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5
MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3
ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxl
bWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li45MTQxOTZj
NGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFmMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
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
ZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMTEwOWIzMTZiZDc2NTUwNmIzNjI5ZmMw
YjdlODA4NjE3YWY4NTQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJG
b3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
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
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVh
OGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmEwMTFiMjc2MjczODk2MThlZDVjMGM4MzI5
ZTI5N2IxZDE3OWRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
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
IGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCiAgICAgU2hhcmVkQnVm
ZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6
IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICByZXR1cm4g
ZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8g
Y29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/
IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZm
MDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9y
eVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVt
b3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRy
PE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVjNjIxMjkwMDhkZjYx
Mjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3
IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQogewogcHVibGlj
OgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVh
bT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0
bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2
ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOS4uYzVk
ZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hp
dmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZE
YXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExl
bmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExl
bmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZj
MS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsK
IH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjll
ZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRp
bmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEw
NWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQz
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUs
NyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8g
SVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9V
TkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJu
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2Vi
RGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRS
ZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4yZmZjYjg5
OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVz
b3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0K
IAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFt
PiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0
YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiNmViODZmY2Nh
NWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzLi45NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEw
YzM5MWJjY2EzMzdkMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAg
LTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzk0OGFmMTk4N2JmZTVhN2MyZjc0MWJiYTYwYzM5ZWEwMjVj
ZGU4MS4uNmE0ZWE3MDkxZjBjOGFlMjdmZDcxYTJmMjI0N2UyN2JiNzA0YjI2MCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQg
RmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3
Y2E0NjguLmJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC00MywzOCArNDMsNDAgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmlu
Zygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVF
KFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBj
b3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7
CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXIt
PmNsZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4
NSwxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRp
Z3VvdXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
dGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIs
IDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRh
KClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDcgKzk5LDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwpAQCAtMTExLDcg
KzExNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxh
cmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
dmVjdG9yMCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0
b3IxKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKQEAgLTE1MSwxNSArMTU0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEs
IG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmlu
YXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhh
Yml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0
aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgogICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKKyAgICBhdXRvIGNsb25lID0gc2hh
cmVkQnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25l
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBA
IC0xNzUsMzAgKzE3OCwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZics
ICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wn
fTsKLSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsK
KyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Qu
c2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAi
Z2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAg
ICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIo
aWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRh
dGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1
ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRh
KCksIGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6
ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFz
Q2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9
CiAKQEAgLTIxMCwxNSArMjE2LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IGJ1ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7
J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdi
J319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7
J2EnfX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
LCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAn
YycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScg
fSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIx
MTAuLjg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="471461"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446125</attachid>
            <date>2021-12-06 22:24:41 -0800</date>
            <delta_ts>2021-12-06 23:08:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211207172439.patch</filename>
            <type>text/plain</type>
            <size>414298</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uYjFlNTI1Y2NmYTZhMzI2MzU3YTJkZGVkYWNkMWE0
NjBmZWQzZGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGVuZCBiaXRzIGluIHRleHQgYm94IGl0ZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDcxNzk0NzVmN2RmZDA4ZjE0OGQwMjU4N2U0MGNmZDU5YjAxYWE4ZGEuLmQ5
YzcwNjhmYzAyYWQ1YWQ4ODhjZjI0ZjI2MWViMDI0MThlY2E0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJD
b3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6
CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQ
STo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjpl
bmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hs
aWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRl
cjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRX
aXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVG
aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
YWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5
IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9y
IEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uZjgwOGU5MDVhYmQ1MDJi
OWUyOTAzOTYyYzE0N2Y1OWQ3OWJkM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVu
Y29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sg
dXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uNjNkMDAy
NmYyYTY3YTdkZTUyNDE2YjlmYWMzYTgwZjlkODRhYjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06
Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRh
dGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2Vi
IExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5
ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4
MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAg
ICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0
byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0
MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRi
N2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUg
PT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXBy
ZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNy
ZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5
Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTky
OGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9w
bmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBj
Z0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhp
bnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtb
TlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAg
ICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJm
ZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVS
ZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVz
dWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsK
LSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4uNmU1YzQ1NjRk
NWM3NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJl
c3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0
NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQz
OGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+
JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5n
IFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVj
dG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgw
NGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRm
MmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAg
ICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUg
YW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVz
cG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkg
Y29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+
IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAg
fSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
KyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1
OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1
NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5
Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENh
Y2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1Zh
cnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0
IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNp
bmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVk
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9u
c2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYu
LjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsK
IAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlm
ICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046
OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZh
bHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5
LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtp
ZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVj
dC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3
NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcx
OWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7Cisg
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRh
KCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZm
ZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFL
ZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3Rh
dHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
cGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+
KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFm
NjA5MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCku
YXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBi
bG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVy
biAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURh
dGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxT
ZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVm
ZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJl
NC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVz
aW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJl
ZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXgg
ZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTI2YjUzODQ4YTk5MDlk
YzcyNDA5NzFiNDQ3NmRlMGJlMGUwYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAg
ICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAg
YXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
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
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkx
Y2I4NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGMwODc4NWFmOGZjOTI0ZTM1M2ZmZDQ4M2RmN2I5
NWRhMjQ0M2FlODQuLjllOWYyOTQ2NzJmM2Q2MjI1MDNiMWU1NWIxNzk2ZjBjYTFlY2ZhNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMz
ZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlv
bnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAo
YnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3VyY2VE
YXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpAQCAt
NTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNk
Y2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBj
b250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNo
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVI
ZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVk
RGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVI
ZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3Rl
ZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1J
TUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
Ly8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3
ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMg
NSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1
NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVy
YXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0
NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEw
YmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAg
ICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBk
ZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBh
IGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChk
YXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAv
LyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBp
bW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdm
NjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4
NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hh
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
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1
NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBA
IGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+
Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAg
IC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5
c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAg
IEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1
NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7
CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91
c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2
aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQy
NWNkZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5kZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVm
ODQ5MTliMjY1ZDAxY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpD
YWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQog
ICAgICAgICByZXR1cm47CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgq
bV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVh
cigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsg
bmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2
MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5
ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VF
bmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRz
LgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2Rh
MTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZi
YTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8g
dGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJl
Li45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2Fi
bGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJv
ciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZp
cnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAg
ICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5
MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdG
b250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNl
RWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFi
OGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5h
YjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEy
MDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBj
ZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRl
OgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsg
fQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBl
NTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
QEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBk
aXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRv
dWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNy
ZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcg
KzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9u
c2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tU
b1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdp
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
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3
OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4
LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4
ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmVhYzg0MTgzY2EzZDlhNDY0
ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9y
KSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9z
aXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVm
ZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgm
bWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsK
LSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBh
dGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5n
U3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0K
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBz
ZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1v
dmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNl
IHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRp
Z3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5j
b3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YSht
X3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkp
fSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50
LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpj
b3B5RGF0YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSAr
IGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NF
UlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0
b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsK
ICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUt
Pm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
e2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAg
ICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9z
aXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5p
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQog
dm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdt
ZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYm
ICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtd
KGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdM
SUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikK
LSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11
dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
e3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19Owot
fQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90
aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQo
Y29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlz
RW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlm
IChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1h
eVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxl
TWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGlu
Z1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBp
ZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAg
cmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4
X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVy
biB7IHsgZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdt
ZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1Rv
Rml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShH
TElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVz
PiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdt
ZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50
PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29u
c3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNF
KENGKQorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNl
bmRpZgorI2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lm
IFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwK
KyNlbmRpZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wg
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2lt
bXV0YWJsZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewog
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApA
QCAtNDc1LDcgKzUzOCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU1
MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAg
LTUzNCw3ICs1ODcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2
NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZl
OTk4OTdiODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYy
LDE0NiArNjIsMTM4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0
ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsg
fQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFw
cGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQs
IE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7
Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRl
cz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAv
LyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGll
ZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJh
dGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8g
RklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2Ug
dGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAg
ICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIn
cyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNl
Z21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVy
IHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVu
Y3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBl
ZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUg
cmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5l
IHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2Vn
bWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1
YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRh
dGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJv
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
eyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAg
ICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFT
ZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFz
cyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1
aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNp
emUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0g
ICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVz
IGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4m
Jik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
TlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHko
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owog
Ci0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNl
Z21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsK
QEAgLTIxMCw1NSArMjAyLDEwMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0
b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5i
ZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQo
KSBjb25zdDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLnNpemUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1l
LCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdl
dFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAot
ICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29u
c3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29u
dGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAg
IGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNp
emUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
IHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENG
RGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0
YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0Owot
Citwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3Rv
ciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11
dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsK
IAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxs
b3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVs
YXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFy
ZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAg
ICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAg
ICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5z
dXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3
aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFw
cGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBw
aW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdF
QkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9
OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
ewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NiwyMyArMzA1LDI0IEBAIGlubGluZSBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlE
YXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxv
cHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVu
dC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
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
ZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2Rk
NTkyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTQxLDE3ICs0MSwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZm
aWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0
aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJl
dGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1Jl
dGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFz
T25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0
YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0g
YWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVz
KGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY4LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5n
dGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4u
NmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsy
MTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVC
aW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0
aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5
cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAg
ICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8g
YnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZm
ZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXgg
OWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uOTgwNTQ3YjhjYzRjNGE4
OGNhMTU1Y2JiMTc4MjBhZjg1ZTJkYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4g
X2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIg
X3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKQEAgLTk1LDI3ICs5NSwyNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpk
YXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJy
aWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3Jl
YXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0
byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhd
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI1LDcgQEAgUmV0YWluUHRy
PE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0p
OwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6
ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgw
ZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFy
c2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0
dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRk
MzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3
M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpA
QCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJ
ZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRh
dGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0
RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERh
dGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcg
KzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBh
IEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJr
aWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJy
YXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFp
bmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7Cisg
ICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
aW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0
YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzks
OSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9l
bmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5i
dWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1
YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1
ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFy
aWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmlu
ZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRl
MTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4u
Nzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiAr
MzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBi
eXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0K
IAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dS
ZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25z
dAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihn
X2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0
YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
LSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBj
b25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBi
eXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5i
MTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2lu
IG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRh
LCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywg
aWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBG
b250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdp
biBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250
PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdy
YXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0
ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5
NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZp
c2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxi
YWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3Rk
OjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50
ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2li
aWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNr
OjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpu
dWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9
IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBm
bG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Rm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApk
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
YmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRk
ZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcg
KzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdt
ZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21l
bnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8
fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJz
ZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEw
NzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmRmNjJiM2Q3MzYzZWVlNjllZWUyNzIyYTRj
ZDA2YTJkYTQ5YTYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShi
dWZmZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJl
bnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3
ICsyMjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzgsNyBAQCBEYXRhVVJMUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29k
ZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkg
ewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNl
KHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAg
fQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
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
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJi
YTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVj
M2I0YWQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkg
QEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QK
ICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVh
bWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmgKaW5kZXggYmJiOGMxMzk2ZjAwM2Q2NDI2ODg5NzlhNjg0YzY2MWIxY2I4NzFiZS4uZDAxNGNj
NmE1ZGM3YjE3ZTM5OTYwMDZiZjZlYTY4YThiYzk5NGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5
N2MxODgzMmM2YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZi
OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMzY5Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
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
YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFhZjA0
YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAg
ICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFj
dENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0
cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
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
ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjll
ZmViNmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcg
KzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBt
YXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1
Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRy
IG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4
dCkgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXIt
PmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVy
OworICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAt
NzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNp
emUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJ
bWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZi
OGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgx
ZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAj
aWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2Nl
ZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjVhZDFmNmZhYzRiNjU0NzUxZDU5
MWQzNjM1YzQ2ODUwMzlkNTcyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAg
dHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNd
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQog
ewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAg
ICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0
YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRU
eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ld
XTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAg
YXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3Jl
YXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0
IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50
LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9y
Om51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0
IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50
LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAg
IH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRh
LnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAg
cmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCks
IG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1h
Z2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFT
U0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYg
IXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBh
dXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAg
ICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRp
T3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBh
dXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmlu
ZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBz
ZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwog
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3Rl
Ym9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3Ry
aW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9O
X1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21E
YXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxp
emVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkg
PT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRU
eXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBA
IC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2lu
Q3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZl
ciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBw
YXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBk
cmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0g
cHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJv
YXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9t
IGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJp
bmcgYGRyYWdvdmVyYApAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKiljb2NvYVR5cGVdOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21f
cGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03
NTcsNyArNzU3LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVi
b2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9i
amVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFiNTkxMjNl
MWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li5mZDU3ZDIyMmMyZDc0MzAxNjExNjJjMGUyYjg4ZTlm
MWNjMzE5OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
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
NmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1
YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmlu
Zzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBl
U3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+
Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0
KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xp
ZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgp
XTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBj
dXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5n
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bh
c3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0Fs
cmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgp
XTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3
ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi4xYjkxOTE0ZTNmNzI3YThlZjY4
ZjllMWE2YWUxNTUzODZkOWZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAg
IHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlw
ZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSku
Z2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHRO
UyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1i
ZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAg
IGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1
dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8g
ZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAg
ICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYg
dHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91
bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURh
dGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAg
aWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDYsNyArMzQ2LDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5
cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3Jp
dGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRX
cml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGNoYW5nZUNvdW50KCk7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJT
YWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRm
b3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewog
ICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYg
KCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKIAogICAg
IGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBh
dXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0
ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikt
PmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9y
bURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAg
ICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGEzN2EwZDg3
NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2MuLmIxNzQ5NzQ0NTRiZjczOTg5MDljYzhi
ZWE0ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVu
Z3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlm
ICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVj
ZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0
MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRl
eHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJv
dW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIo
KSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdh
eXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkg
eyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2
ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2Fi
NTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgs
NyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZh
dWx0OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0
YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44
OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVE
YXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
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
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMx
MmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLmM0NjBmNWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVh
NjY1M2IzMGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTk4Niw4ICs5ODYsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJ
bWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgp
KQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAK
QEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29u
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3
NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBm
ZmQzYmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAg
ICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
PSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJl
ZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUw
NjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTcz
M2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVu
Yyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxv
d2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZj
NzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBj
aGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3
NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEz
YzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkg
OiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2
ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0
cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
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
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMu
LmY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAg
fQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSht
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0
KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJj
ODliNzE4NWUwM2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNk
ZjE4MzJlOWYuLmU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTM5LDE4
ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRC
dWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwot
ICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9i
dWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmIzYTk5
YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
TWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNp
emVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMt
PmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApp
bmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi43NmI3M2NhZTRj
ODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KIApAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4g
dGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3Rl
bVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAj
aWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291
cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjEx
MGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3Rh
dGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNv
bnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0
YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3Vy
Y2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNG
RGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNo
aXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjM1ZWEx
NjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC01NjksOCArNTY5LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgaWYgKCFm
b250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAg
IC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5k
ZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAg
YXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZv
bnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkp
OworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1J
bkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBlOWE1MTNhMzA1
ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNj
MmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAg
ICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkp
OwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2
Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1
ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVy
KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Nl
bGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAg
W3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJs
ZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVlZTBhZDYyY2IzNDg0YzFjMzQw
NWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEy
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlX
cmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFy
ZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFi
ZDQ5MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxTaGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1
ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPFNoYXJlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAg
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hh
cmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRh
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVz
QW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAg
IEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlw
ZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkp
OwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRh
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVy
OwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3
aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29u
c3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2Rl
ciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQx
NCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3Vt
ZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KGJ1ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
dmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0
YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyAr
Mjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBX
VEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7
IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkp
OworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
MzA5NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJu
IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAj
ZW5kaWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5
MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1
MjFmMDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29s
b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNs
YXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiAr
NzYyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhm
ZjgyOTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcx
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cApAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1
bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wg
Y2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYx
NjgyNzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRm
b3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxs
cHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURh
dGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBl
NzYwYWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlk
OTgzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNi
NTAxYmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYg
KzM4LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5j
bG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5n
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2Vi
UGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2MThm
ZWQ0MjJlYzM4OTc0MDM1Li4yZjQ0OGE3NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFhNjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0
RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rp
b248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdl
dERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxi
b29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0
RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBG
dW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVu
Y3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRl
eCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVm
OGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsx
NTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9m
aWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1
dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwx
MCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2ht
ZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYg
Y29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAg
aWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRm
N2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdk
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0
IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0
KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tI
aWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hs
aWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQg
aW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdo
bGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsK
IAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0p
CiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGln
aGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhp
Z2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1
MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTky
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2
ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAg
ICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19z
ZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3Rv
bURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNp
emVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4
ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3
YjY3NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93
ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0
ZTI2OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAh
PSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykg
fHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3Ry
YXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVn
aXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRv
IHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3Ry
YXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9u
RGF0YSB9KSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Cisg
ICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1
ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSks
IDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUy
YjYwMzkyY2FjOS4uNjgxNGE3MGEwMmJhNWRjYWVhYWY0ZjQ0ZTA1MTQ4N2Y3OTdiNGUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYs
NyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVz
IG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9h
cmRUeXBlKCldKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBb
cGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
OiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9
CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZp
bGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJM
LCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8g
bnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNE
YXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBz
ZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVX
ZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3
ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5T
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNl
ZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9t
aXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBO
U0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1
NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxl
c0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5T
RGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAg
ICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJl
YWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBO
U0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
YnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1f
cGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1l
R2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLjU1MTY2NjZj
NWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0
LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6
VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA1YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li45ZmYyM2E4NjZm
ZjBkODYyNzUxODViZjYyOWYxYTQ3NmNmNGZlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVn
aXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwog
ICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAg
ICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZk
Njk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3
N2YzMGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAg
ICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEo
KSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAg
ICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92
ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3M2JiODM3N2Iw
NmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFkMjE0ODA2MzFh
NDVjZmU5NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxl
Y3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNh
dmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRl
bywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hh
cmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURl
dGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3
YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZiNjE2NDY0ZDAz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21f
Y29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZv
aWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0
cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBV
SUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBO
VUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcyYjEwZThmMjQ3
M2M2MGEyOTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0Y2Y3YzM0OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3Jt
QWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAg
ICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFG
b3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBh
bGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAg
ICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAg
ICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5OSw3IEBAIHN0
YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NTcw
LDcgKzc1NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlf
U1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVk
IGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJl
RGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxl
cyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1No
YXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1Jl
Y3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBm
ODBjODI0OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZiOWUwNmJmOGRk
YWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFn
ZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLmE3
ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBA
IFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0
ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3Ry
dWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jt
VHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUx
YjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1
YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYz
NCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJ
bkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVy
LT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVy
KFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0
Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nl
c3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBk
YXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2Fy
ZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSld
OwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAg
ICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAg
ICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkp
OwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4
OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVu
dC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
UGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAg
IFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUt
PnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVu
dHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRl
cygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2
MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQs
NyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0
aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAg
IHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmlu
YWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJv
b2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0
MTQ2OGMuLmEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJl
cXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVk
QnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFu
Y2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRE
YXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRh
OwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsK
LSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVu
c2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwg
cmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250
aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAg
IH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQ
SShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRv
QVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmco
KS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIw
MTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4
ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAo
ZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBm
aWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4
MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRm
MGRlMDUwOTQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5k
bGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQz
YWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWVi
MjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdv
cmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3
ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRl
cmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
KSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2lu
dGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVM
b2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi4xNTIwNWJh
OGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9w
YWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJv
YXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZk
OWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li45MTQ2ZTRjNmQyZTE4OWViNTE5
OWFmYzk1ODM2NWJiNDJkYjUyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0
ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIy
M2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIo
bG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3
MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjZmM2Y1NjZjNTJmMWUzOWRlZjAw
YjVmMzE5ZmViYWU2Njc4YTE5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
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
aWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uM2Zm
MzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBl
KFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyBy
ZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
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
KiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3
YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4
ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNl
KiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dl
YlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFt
ID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2
NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBA
CiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDc5NDhhZjE5ODdiZmU1YTdjMmY3NDFiYmE2MGMzOWVhMDI1Y2RlODEuLjZhNGVhNzA5
MWYwYzhhZTI3ZmQ3MWEyZjIyNDdlMjdiYjcwNGIyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMS0yNSAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNo
IGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFy
YW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDUgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNz
XSBBZGQgdGhlIGVuY29kaW5nL2RlY29kaW5nIGZvciBGaWx0ZXIgYW5kIEZpbHRlckVmZmVjdApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5iYWFlMjdh
OTk4ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1MjJjMjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDQw
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3Ry
aW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgp
ID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RS
VUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PmlzQ29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOworICAgIGF1dG8gY29weSA9IGJ1ZmZlci0+
Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MywxMiArODUsMTMgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9F
USgnYScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCkBAIC05Niw3ICs5OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxv
IjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltd
ID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4o
dGVzdERhdGExKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4o
dGVzdERhdGEyKSk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKQEAgLTExMSw3ICsxMTQsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKKyAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
MCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwogICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CkBAIC0xNTEsMTUgKzE1NCwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAg
ICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdp
dHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAg
ICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGlj
dWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEp
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAg
ICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6
ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0g
c2hhcmVkQnVmZmVyLT5jb3B5KCk7CisgICAgYXV0byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29w
eSgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xv
bmUtPnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAg
QVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTc1LDMwICsxNzgs
MzMgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Z2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycs
ICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8
dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHMzKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAg
YXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAg
ICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRh
dGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIg
PSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIo
aC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBp
amtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUo
KSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwg
ImFiY2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5z
aXplKCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgp
LCAiZ2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAg
ICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMTAsMTUg
KzIxNiwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZm
ZXI7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdj
JywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAn
YycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgp
KTsKIAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycs
ICdkJ30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
RVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
e3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7
CisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2Qn
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCks
IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywg
J2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwog
fQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpp
bmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0
MmYxMGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcg
KzYyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446127</attachid>
            <date>2021-12-06 23:08:40 -0800</date>
            <delta_ts>2021-12-09 05:17:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211207180838.patch</filename>
            <type>text/plain</type>
            <size>414409</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhMDgyNGJiN2M3ODUw
NzRhZjgxMzY1OTEwNjEwMGRiZTNmMDVhMC4uYjFlNTI1Y2NmYTZhMzI2MzU3YTJkZGVkYWNkMWE0
NjBmZWQzZGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGVuZCBiaXRzIGluIHRleHQgYm94IGl0ZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDcxNzk0NzVmN2RmZDA4ZjE0OGQwMjU4N2U0MGNmZDU5YjAxYWE4ZGEuLmQ5
YzcwNjhmYzAyYWQ1YWQ4ODhjZjI0ZjI2MWViMDI0MThlY2E0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTM1IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hh
cmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJD
b3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6
CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQ
STo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjpl
bmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4u
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hs
aWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRl
cjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRX
aXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVG
aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
YWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5
IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9y
IEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uZjgwOGU5MDVhYmQ1MDJi
OWUyOTAzOTYyYzE0N2Y1OWQ3OWJkM2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVu
Y29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAg
ICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sg
dXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uNjNkMDAy
NmYyYTY3YTdkZTUyNDE2YjlmYWMzYTgwZjlkODRhYjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06
Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRh
dGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2Vi
IExvY2sgQVBJIHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5
ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4
MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAg
ICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0
byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9k
YXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0
MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRi
N2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUg
PT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXBy
ZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNy
ZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5
Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTky
OGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9w
bmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBj
Z0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhp
bnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtb
TlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAg
ICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJm
ZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVS
ZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVz
dWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsK
LSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4uNmU1YzQ1NjRk
NWM3NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEwMWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNl
LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJl
c3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6
OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwg
UmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25z
ZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNl
Qm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0
NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQz
OGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhS
ZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+
JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0
aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5n
IFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVj
dG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgw
NGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRm
MmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VC
b2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAg
ICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUg
YW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVz
cG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkg
Y29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+
IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAg
fSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
KyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1
OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1
NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5
Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENh
Y2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1Zh
cnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0
IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNp
bmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVk
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9u
c2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYu
LjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsK
IAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlm
ICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046
OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZh
bHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5
LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtp
ZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVj
dC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3
NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcx
OWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7Cisg
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRh
KCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZm
ZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFL
ZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3Rh
dHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
cGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+
KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFm
NjA5MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcxZTcwMWY1NjgyZmI0OTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCku
YXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBi
bG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVy
biAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURh
dGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxT
ZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVm
ZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAwODhlMTJl
NC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVz
aW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJl
ZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXgg
ZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMTI2YjUzODQ4YTk5MDlk
YzcyNDA5NzFiNDQ3NmRlMGJlMGUwYjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAg
ICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdl
Rm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAg
YXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
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
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkx
Y2I4NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsK
LSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQo
KSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBN
b2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdl
dCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
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
dGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3
MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVj
b2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRl
bnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3
NDI3NGViYjE4Li5kMTVjYjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNU
ZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAg
ICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpy
ZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1
Nzg1ZmVjZDVlYWM0NzIuLjVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNh
ZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBB
U1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNl
LnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXpl
KCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFm
YzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChE
b2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
ZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVl
c3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBG
ZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZh
Nzc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYw
OCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUo
KQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1f
YXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2Fy
Y2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJl
c291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNv
dXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
fQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZl
UmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgp
OwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgp
OwogfQpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlk
ODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRm
ZjhkZDJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2
ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRS
YXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZp
bHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMjgsNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIuLmM3MDk2NDEwYTdh
YTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsK
IAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMg
bm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2Fk
ZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGMwODc4NWFmOGZjOTI0ZTM1M2ZmZDQ4M2RmN2I5
NWRhMjQ0M2FlODQuLjllOWYyOTQ2NzJmM2Q2MjI1MDNiMWU1NWIxNzk2ZjBjYTFlY2ZhNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkg
ZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2NjEwODM4MDU2NjRlMDExOWYx
MWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlhYTdiMDE0NmUzMDc3
NDY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICsz
MTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9y
LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEp
CitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgp
LCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAg
ICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVz
cG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5
KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBu
ZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3
ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNs
YXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWlu
dDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShS
ZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5
PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBu
dWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hh
bmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDVi
YjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMz
ZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAt
MzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlv
bnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0
YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAo
YnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3VyY2VE
YXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpAQCAt
NTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwg
d2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3Qg
aGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFu
dCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4
MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlm
M2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4
YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0g
cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJl
c291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25s
eSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUg
cGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5
MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJM
KGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdl
IGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291
cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29w
eSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVz
dCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxv
YWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGlu
ZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2lu
IChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVz
IGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJy
b3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5z
dGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVu
dHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxp
Y2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAg
ICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmlu
ZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1
NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNh
dGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcg
KzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
SG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxi
YWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0Zv
cndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2
YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkg
OiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgp
ID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1
OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04
MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMs
NyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3Rv
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
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNk
Y2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjli
NmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBj
b250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNo
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVI
ZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2Rl
KGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVk
RGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVI
ZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3Rl
ZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1J
TUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBj
b250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
Ly8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3
ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMg
NSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1
NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVy
YXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li42NjFhOTlhZTU3NmEyYjkwOGRjYTA5NjY0
NDRiYjBhZDVmYjEzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEw
YmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAg
ICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBk
ZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBh
IGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChk
YXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAv
LyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBp
bW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdm
NjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4
NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBA
IC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hh
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
Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2
ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21G
b250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0
aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9t
UGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0
YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9u
dENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0
ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1
NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBA
IGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0
YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIz
LDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRh
dGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2
YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3Jp
cHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+
Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAg
IC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5
c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVj
MzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91
bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAg
IEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1
NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7
CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91
c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2
aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0
YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVk
KGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQy
NWNkZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5kZTc4YWNiMjIxMGExZmY0ZWZhOTZjMDVm
ODQ5MTliMjY1ZDAxY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpD
YWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVy
JiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQog
ICAgICAgICByZXR1cm47CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgq
bV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVh
cigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsg
bmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2
MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5
ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
cmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VF
bmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRz
LgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBt
X2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2Rh
MTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZi
YTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8g
dGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAg
bV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJl
Li45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2Fi
bGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJv
ciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZp
cnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAg
ICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5
MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdG
b250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNl
RWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3Vt
ZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4
IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmVlZGI2YjM3ZTQyMjFi
OGY5ODI2OTRlYjA5NmEwMjlmZDFiODFlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5h
YjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2
NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2Zj
MjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEy
MDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBj
ZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZy
b21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRl
OgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNz
aW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsg
fQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBl
NTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
QEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBu
dW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBk
aXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRv
dWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxl
QmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNy
ZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcg
KzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9u
c2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tU
b1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdp
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
dGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3
OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlz
ZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4
LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4
ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmVhYzg0MTgzY2EzZDlhNDY0
ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBw
ZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3Ip
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9y
KSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEu
c2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9z
aXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVm
ZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgm
bWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsK
LSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBh
dGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5n
U3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0K
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBz
ZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1v
dmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNl
IHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRp
Z3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5j
b3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YSht
X3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkp
fSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50
LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpj
b3B5RGF0YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSAr
IGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7
bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwog
ICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NF
UlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0
b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsK
ICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBA
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUt
Pm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
e2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAg
ICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9z
aXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5p
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQog
dm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdt
ZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYm
ICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtd
KGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdM
SUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikK
LSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11
dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
e3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19Owot
fQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90
aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4
IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQo
Y29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlz
RW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlm
IChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1h
eVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxl
TWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGlu
Z1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBp
ZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAg
cmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4
X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVy
biB7IHsgZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdt
ZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1Rv
Rml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShH
TElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVz
PiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdt
ZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50
PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29u
c3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNF
KENGKQorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNl
bmRpZgorI2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lm
IFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwK
KyNlbmRpZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wg
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2lt
bXV0YWJsZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewog
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApA
QCAtNDc1LDcgKzUzOCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU1
MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAg
LTUzNCw3ICs1ODcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2
NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZl
OTk4OTdiODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYy
LDE0NiArNjIsMTM4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0
ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsg
fQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFw
cGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQs
IE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7
Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFS
ZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRl
cz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAv
LyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGll
ZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJh
dGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8g
RklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2Ug
dGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAg
ICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIn
cyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNl
Z21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVy
IHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVu
Y3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNv
cHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBl
ZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUg
cmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5l
IHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2Vn
bWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1
YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRh
dGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJv
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
eyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAg
ICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFT
ZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFz
cyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1
aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNp
emUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIp
Ci0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0g
ICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVz
IGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFzaXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGlndW91czsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4m
Jik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
TlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHko
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Owog
Ci0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNl
Z21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsK
QEAgLTIxMCw1NSArMjAyLDEwMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0
b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5i
ZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQo
KSBjb25zdDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLnNpemUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1l
LCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdl
dFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAot
ICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29u
c3Q7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29u
dGlndW91cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAg
IGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNp
emUpOyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
IHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENG
RGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0
YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0Owot
Citwcml2YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3Rv
ciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11
dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsK
IAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxs
b3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVs
YXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFy
ZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAg
ICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAg
ICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5z
dXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3
aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFw
cGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBw
aW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdF
QkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9
OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
ewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NiwyMyArMzA1LDI0IEBAIGlubGluZSBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlE
YXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxv
cHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3
Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVu
dC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
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
ZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjY4YjA4OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2Rk
NTkyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTQxLDE3ICs0MSwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZm
aWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0
aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJl
dGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1Jl
dGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFz
T25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0
YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0g
YWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVz
KGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKQEAgLTcyLDcgKzY4LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5n
dGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4u
NmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMjExLDExICsy
MTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVC
aW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0
aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5
cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAg
ICAgcmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBl
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJG
b3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8g
YnVmZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZm
ZXJGb3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXgg
OWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uOTgwNTQ3YjhjYzRjNGE4
OGNhMTU1Y2JiMTc4MjBhZjg1ZTJkYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4g
X2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIg
X3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKQEAgLTk1LDI3ICs5NSwyNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShOU0RhdGEgKmRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpk
YXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJy
aWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3Jl
YXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoYXV0
byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6ZmlsZVBhdGhd
KQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjYsNyArMTI1LDcgQEAgUmV0YWluUHRy
PE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0p
OwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6
ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgw
ZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFy
c2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0
dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRk
MzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3
M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpA
QCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJ
ZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRh
dGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0
RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERh
dGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcg
KzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBh
IEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJr
aWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJy
YXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFp
bmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7Cisg
ICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
aW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0
YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzks
OSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9l
bmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5i
dWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1
YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1
ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFy
aWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmlu
ZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRl
MTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4u
Nzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiAr
MzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBi
eXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0K
IAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dS
ZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25z
dAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihn
X2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0
YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
LSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBj
b25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBi
eXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAppbmRleCAxN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjLi5i
MTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2lu
IG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRh
LCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywg
aWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBG
b250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdp
biBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhl
dGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSkKK1JlZjxGb250
PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRh
LCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdy
YXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0
ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5mOWJhY2E1YTI2NDFlMzhjODI5
NDAwZjVlMzI1NGRmZWQ0OGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZp
c2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxi
YWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3Rk
OjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50
ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2li
aWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNr
OjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpu
dWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9
IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBm
bG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywg
Rm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApk
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
YmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRk
ZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcg
KzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdt
ZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21l
bnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8
fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2Vy
IGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJz
ZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEw
NzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLjMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRi
ZmYxMzMwNWZkYWMwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNCw5ICsyMTQsOCBAQCB2b2lkIFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQu
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsy
MjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
bV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzcsNyBAQCBEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShy
ZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewog
ICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJl
cXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQog
CiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFi
OTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2Yw
NGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0
YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNl
X3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJi
ZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4
YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3Bl
cnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJl
ZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90
IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZm
ZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUo
KTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAg
ICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEu
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGlu
dCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAg
ICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3Vy
Y2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVj
b2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJl
IHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRn
ZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBp
bnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlz
CiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdl
U291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRh
KCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0
YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0Rh
dGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRp
Z3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0
aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBT
aGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0
aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAog
ICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxs
YmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNr
cyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZm
ZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUo
KSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRp
Z3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAg
Q0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRh
dGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3
YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApA
QCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWRE
YXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQog
ewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENG
KENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0
OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFl
NzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBA
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3Ro
ZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0
YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lk
Kiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1
ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEu
LmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0
YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVj
aygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAg
ICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJs
ZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1
cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEy
NzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMz
MDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVl
VHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRp
YWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4
NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAog
ICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2Fw
cGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3Nj
YWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VM
b2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAg
ICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01B
VEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDAxNjA1ZmM5MTQ5N2U0NjJiYTA3
NzMwNDc4ZTg0YTg1NTFlNjcyM2YuLjE0NzQ4MjhmZGU2NjkyNGQ0MmJhYWMzMzM0ZmY4ZDVjM2I0
YWQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjIsOSArNDIyLDkgQEAg
VmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAg
ICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVy
UGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgK
aW5kZXggYmJiOGMxMzk2ZjAwM2Q2NDI2ODg5NzlhNjg0YzY2MWIxY2I4NzFiZS4uZDAxNGNjNmE1
ZGM3YjE3ZTM5OTYwMDZiZjZlYTY4YThiYzk5NGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXpl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAog
aW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5v
ciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1
bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0
QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
aW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFk
OGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBj
b25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEg
PSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAg
ICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpj
cmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7
CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5N2Mx
ODgzMmM2YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZiOGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMzY5Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBH
U1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZl
bnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAg
IEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUo
KSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3Bs
YXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNw
cAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVk
NWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9v
bCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3No
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGlj
IHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hh
ciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVz
ZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3Vw
VGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRM
ZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExl
bmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRh
dGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAg
ICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1h
cmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3Rh
dGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJr
dXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3Ig
fTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBp
ZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZm
ODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFhZjA0YTc5
ZWRkNzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25z
dCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAg
ICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENl
bmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFj
dENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4
M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJu
IEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRh
dGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwg
JmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1
Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYw
MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9Owog
Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdi
MDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0
MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1l
bnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGlu
aXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQ
YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkw
MzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4uYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUx
YzYyZjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
c3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAg
ICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBl
OjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFs
aWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2
X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRd
KSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3Zl
cmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBN
YXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBA
IHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNv
cmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJp
YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4m
IHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50
Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50
UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25z
dHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5
cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAg
ICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNl
dDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3Ry
dWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2
ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRp
Y2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0
cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVp
bnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsy
MDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFu
dHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAg
ICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0y
MjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlh
bnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJp
YW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNl
dDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkw
YmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZk
ZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3
ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9w
ZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5B
QkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVy
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxp
ZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1
NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlw
aElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gy
LCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gz
KSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkp
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQog
ewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlz
VmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3Np
dGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3
ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6
ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAg
ICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRp
b24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4
LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3Qg
Q292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFn
ZUluZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlw
aCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8g
Q292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2
YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUx
MDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAK
IC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0
ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0
aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hh
cmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4
X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVp
bnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6
ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZv
bnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8
Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBm
b250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5k
ZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVj
NjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5o
CkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRp
YW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZp
eDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0
LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsK
IH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8dWludDhfdD4mKTsKLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wg
cmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43
OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1
dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9y
bWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9m
ZnNldCk7IH0KKyAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENv
dmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2lu
Z2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBt
YXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwg
c28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJU
YWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWlu
dDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
bG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChi
dWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0
IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBD
b3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJv
b2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBz
LCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtj
b3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1
cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4
LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChp
bmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpA
QCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1
cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAg
ICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZl
YXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9w
ZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcs
NyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3Bl
blR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAK
LSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0
cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBz
Y3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRM
aXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRh
YmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
U2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAg
ICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsK
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3Jp
cHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQp
OyB9Ci0gICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVm
ZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBM
aXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3Qg
U2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2Ny
aXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0
ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBj
b25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVy
LCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBz
Y3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlw
dHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRh
YmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBl
OjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVs
dExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0g
ZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9v
bCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZl
cnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxl
KQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBz
dGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShP
cGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9
IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAg
ICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAg
T3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRN
ZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBM
b2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3Vw
cG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAg
ICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFi
bGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAg
IHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQg
T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJU
YWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5
cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVu
VHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlm
IChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92
ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUx
YjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlx
dWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5h
bWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZm
ZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQw
NGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcx
MWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2
LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291
cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsK
IHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAg
LTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0
YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4
IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4
M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVy
LCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFl
NWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcw
MTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFs
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdE
SSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFi
bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0
MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3
Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxv
YXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVj
dChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFi
bGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9F
UlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdP
UkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgp
LCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsK
LSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3
YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4
YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxl
Y3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRh
dGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxh
Y2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJl
cGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
U21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hh
cmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgp
OyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRh
LmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1
c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0g
bnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9j
YW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3Vz
dG9tRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBj
ODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2YzYzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC03NiwxMCArNzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRh
U3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3Mg
bW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVu
dC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkp
CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5j
b3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRh
U3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21T
ZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0
NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmVi
NmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIy
MCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJr
ZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9m
aWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkg
ewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUND
UHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOwor
ICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2
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
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGEzN2EwZDg3NGY3
MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2MuLmIxNzQ5NzQ0NTRiZjczOTg5MDljYzhiZWE0
ZDBhM2I5NTc5YTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3Ro
SW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICgh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdm
MWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEwOC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZk
MjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBC
bG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRF
bmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5k
YXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNT
dHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBt
X2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1
YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJk
MTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBA
QCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0
OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YSho
YW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRl
ZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRh
KENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVE
YXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSks
IG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwg
b3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNh
MTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdl
YkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVy
YXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+
c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0
ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lv
bi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMz
ZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIg
aXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hp
bGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5k
IG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRh
dGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5
KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90
Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQs
IGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1f
YnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0
IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRh
dGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9i
dWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBk
MzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFl
N2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25s
b2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcy
Zjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5Njdk
ZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDgg
KzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xp
ZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1v
dmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxl
LCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQg
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYs
IE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQy
MmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4uM2NhMjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3Yjg3
OGRkMTgzZmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1No
YXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
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
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2
ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLmE0ZTBhYjM5YjlkNjZmNjBmZmQz
YmM3NjMwMjYwZDYxYzFmOWZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUp
CiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAg
ICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAg
ICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9l
cnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAg
ICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGln
dW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9
IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAu
LjBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNw
b25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBz
CiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0
Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVu
dC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9
LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAg
ICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3
NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4
ZDU5ZWE0NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcs
OCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2
aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7Cisg
ICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGRmOGFiZTQyNmUwNjcx
NzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2Qy
NjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhj
b25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAK
ICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVy
LT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RBbGxvd2Vk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0
YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFy
KiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNh
YTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhh
ZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVk
aWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBu
dWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91
cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAg
IGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2ZTY3
ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5
NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVz
cG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAg
cmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmlj
cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
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
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLmY2
MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
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
MmQ2NTMzNzRjLi42N2I3ZWI5MDM0MDU1ZDdmMTFjNGM2MTUzM2YyMmMwMWJjNTgxOTU4IDEwMDY0
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
ZmZlcikKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFs
dWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5w
bGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdU
Rk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxNyw3ICszMDE3LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKIAogc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTMwMzEsNyArMzAzMSwzNSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UgogCiBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwor
fQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzA5
NSw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRl
Y29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5k
aWYKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEw
MTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFm
MDkzYWYyNzk4Njc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNz
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC03NjEsNiArNzYy
LDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgy
OTY3ODgzMzc3YTMxYmEuLjY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApA
QCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVu
dENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2Fu
U21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgy
NzM1MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3Jt
RGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAg
ICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRy
OwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAg
ICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYw
YWQzZjRhOWQ1YmFjMWEzNGUuLmM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAK
QEAgLTEwMywxMiArMTAzLDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAx
YmJmZDI5ZGMzLi5jNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDYgKzM4
LDcgQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIH0KIApAQCAtODgsOCArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9z
aW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBj
b25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzNmE2ZjRmYjA3ZjBhYjlkZGM3YTQ2MThmZWQ0
MjJlYzM4OTc0MDM1Li4yZjQ0OGE3NjM5MjdlMDJlY2MxNTk3NTYwMmM5MDFiNzE5YTFhNjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248
YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0
YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5j
dGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rp
b24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBj
ZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi45NGRiNTU3NTMyODVmOGEw
M2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTE1OSw3ICsxNTks
NyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxl
V3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8g
ZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBA
QCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50
Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYg
KCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2Zl
ZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQog
ICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdo
bGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdo
dDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1h
Z2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGln
aHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAog
ICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpz
dG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAg
ICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxp
Z2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hs
aWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBk
MGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQo
SW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAg
ICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxl
Y3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
ZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJj
ODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3
NGM0NjFmODFlM2VlMzY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJW
aWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5j
cmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2
OTY1YjJkYmIyYTczNWUuLmJlMTQzNzBkZTA5YmQ1NzAyYjljN2RkY2Q2Yzc3YjhmNmRhNWY1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBB
dWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwg
IXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRp
b25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0
cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJl
Z2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRp
b25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0
YSB9KSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAg
ICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDAp
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
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
ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2Yz
MGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
aWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBp
ZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwg
bV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAg
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShk
YXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
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
OGMuLmEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVm
ZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2Vk
IGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwog
ICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAg
ICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2ln
bmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVs
ZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1
b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXpl
KCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0K
IAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShy
ZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJ
KGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5p
bXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdh
YThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVl
NzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwv
bWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmls
ZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShm
aWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxl
UGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNk
Y2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRl
MDUwOTQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUg
Zm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFh
YWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBl
MzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBp
bnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtS
ZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2
ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNl
cHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkp
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBl
bmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2Fk
ZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
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
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
aW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2Ji
ZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9u
c2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdl
LT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgp
LT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
aW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1l
CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJj
aGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsK
KyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZl
U2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZm
ZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4u
OTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBA
IFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0
YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNv
ZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVu
dHNBc1N0cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3
ZTM0NGNhMzZlMzA5Li5mM2VkYzI5MWZkOGFhZmUzZGE4MzBmMGQwNDhkOGFlNWU4MzZiM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYg
KGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVk
aXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBh
c3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdk
MTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNp
b25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246
KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4u
YmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNv
cmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRl
bmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4
MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQw
MTJiMTI1ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdl
YktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9u
bHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2
ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uOTE0MTk2YzRhOWJlNmRiYTNmOWIyMzdj
NTZhOGU2YWEwY2FhZjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0
ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRm
ZDMwMGE2ZDQwN2M1NTMuLjExMDliMzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJk
VHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
cmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5
MGE0ZDk3MTEzYmM1OGE0Yi4uYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQpAQCAtNDYzLDcgKzQ2Myw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRl
KS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRh
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChp
ZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1
MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAg
LTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5n
ICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hp
dmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURh
dGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2
ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRh
dGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAg
cmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hp
dmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgz
OGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjViMTBkM2ZmNzU2NzAxMTUx
MzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQmIGgKIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2Uo
KSkgewogICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05T
SW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5k
YXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1
ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQu
c2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0
ZGZiN2UzNGFjNzM0Li5hMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAg
LTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7
CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAg
IAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7
CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0
ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0
YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2Rp
bmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAg
ICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9
Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtl
eV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291
cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVz
b3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6
V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRF
bmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3
ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2OCw3ICszNjgs
NyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IFdpbmRv
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
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRi
ZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMy
OWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
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
ZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEuLjJhYWFmY2RkZTQy
NDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
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
ZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0
NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4Zjli
ZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBX
ZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJl
c291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQx
OGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAK
IGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
c3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDc5NDhhZjE5ODdiZmU1YTdjMmY3NDFiYmE2MGMzOWVhMDI1Y2RlODEuLjZhNGVhNzA5MWYw
YzhhZTI3ZmQ3MWEyZjIyNDdlMjdiYjcwNGIyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDUgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBB
ZGQgdGhlIGVuY29kaW5nL2RlY29kaW5nIGZvciBGaWx0ZXIgYW5kIEZpbHRlckVmZmVjdApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApp
bmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5iYWFlMjdhOTk4
ZmZkNjkxYzEwNmI4ODcxNTU2YmQ0ZjA1MjJjMjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDQwIEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5n
KCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19m
aWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
U3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlz
Q29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOworICAgIGF1dG8gY29weSA9IGJ1ZmZlci0+Y29w
eSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVY
UEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7CkBAIC04MywxMiArODUsMTMgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdG
aWxlKQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCks
IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgn
YScsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIpCkBAIC05Niw3ICs5OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsK
ICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0g
Ikdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVz
dERhdGExKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVz
dERhdGEyKSk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1
ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKQEAgLTExMSw3ICsxMTQsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAg
IFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwogICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CkBA
IC0xNTEsMTUgKzE1NCwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAi
bWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRp
cywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAg
ImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1
cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAg
Ly8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAo
PSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hh
cmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hh
cmVkQnVmZmVyLT5jb3B5KCk7CisgICAgYXV0byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+
c2l6ZSgpKSk7CisgICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOwogICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTc1LDMwICsxNzgsMzMg
QEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdk
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMz
KSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0
byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAg
YXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEo
KTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
MTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsK
LSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5k
YXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamts
LnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwg
ImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFi
Y2RlZmdoaWprbCIpOwotICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXpl
KCksICJnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAi
Z2giKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAg
Y2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMTAsMTUgKzIx
NiwxNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7
CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywg
J2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycs
ICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsK
IAogICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdk
J30pKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2In
LCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7Cisg
ICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQo
KSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2Mn
IH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQog
CiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRl
eCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYx
MGM5YjJmMjM4M2NmYmM0YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYy
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
KyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446525</attachid>
            <date>2021-12-09 05:17:57 -0800</date>
            <delta_ts>2021-12-09 05:54:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211210001754.patch</filename>
            <type>text/plain</type>
            <size>414540</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uZmNiYWZmMWUyYmEwODQ5MDdmYjcyNmUzOTkwYzk4
N2E0MTFmYzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92
ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9Q
QUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVhY2M2MmQ0
MGIwLi42OGNkMzQzYjVkNGQzYzg2MzhhMGFlNTVhYzk1ZTg2YjAyZTVhNjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAg
cmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVk
QnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAg
ICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAg
KElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmRE
YXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlv
bkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
OgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVB
cHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3Ondp
dGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdp
bik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVF
bGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
U3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIENvcHkgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIg
ZXJyb3Igd2hlbiBmYWlsaW5nIGl0cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggZDA4NDQ5YzE0OTI5MDRkZjhlMzRlOTJmYzE3NWVjOGI0YjVh
ZmNiOC4uODE3OTUxMjExM2JjNjgzZjliYWU0OGExZWFlYTgyMjk5ZTYzYzRiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06Cisg
ICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAo
LVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291
cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0
ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwog
MjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4
dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3Rl
eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1ODQwZGUxMTY3NzE5YTA2MzliOGEy
MWJiZGFlOWQ4NGVmN2Q4OTJhLi41OWNkNDg3YWFkYzE4MGEwMDhkNmFkN2M3MTUyNWE4MzdlZTJh
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEt
MTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0
aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBh
bmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNw
cDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8g
V2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4
Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0
aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAg
ICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlm
IChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0
b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxl
bmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTVi
Zi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQ
cm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1
dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3Jl
cHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlw
ZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2
OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3
YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9u
KGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVz
dWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwog
ICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0
OTliYjkwZGQ3ZjAwNzFkNDI0Yy4uNmU1YzQ1NjRkNWM3NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEw
MWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMw
MSwxMyArMzAxLDEzIEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+
JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwg
cmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
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
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJu
VmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOwor
ICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNj
M2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBF
eGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0
Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAg
UmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9k
eSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4K
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNl
Qm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2
OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRp
b24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJv
cik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVz
aW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1E
YXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVk
YmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQy
YzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAog
ICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwog
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRl
YWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNN
YXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBh
dXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChh
LmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVk
aWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFu
dFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRv
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZp
cnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWly
LmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAg
ICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtl
eVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vj
b25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4
YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXIm
IG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8g
c2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBS
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlm
IChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZv
cm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQot
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5E
YXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50
YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJl
dHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigp
KSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6
OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0
KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGlu
ZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVz
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2Vh
cmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQ
QUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJy
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
ZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdhYzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLjM3
YjgzODZhNzhhZTg3NWRjMjU2M2ViY2IyYTc4ODg1ZDMwYmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIGlmIChhdXRvKiBj
aHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUs
IGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1E
YXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsK
ICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2Yzcx
OGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgx
NDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1
bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5
RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3Jt
RGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIo
KS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2
NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBjb25z
dW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90
IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0
MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBA
IC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdo
dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwor
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZm
YTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0
X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBT
aWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
YXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1
b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUy
Y2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBA
IC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVu
ZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29u
c3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApp
bmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFm
MGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAg
LTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9v
bCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEm
KTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1
YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0
NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4
Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9i
amVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdl
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRv
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAg
aWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3Jl
Il9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBk
YXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9z
IH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAg
IGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtl
eUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgg
a2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sg
Zm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFs
dWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1
dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAo
IXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0
aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNr
IGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rp
b24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJf
cyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJl
Y29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpA
QCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtl
eSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtl
eSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0y
MTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJh
bmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktl
eURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0
NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4
UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlk
KCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJl
Y29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAg
LTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRD
b3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3Vu
dCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJ
REJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAg
IGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBp
ZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1
cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgp
IDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2
MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJl
YTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93
ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJl
IHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVk
ZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5
MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4Yzcy
OTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBm
b3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNo
T24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9
LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAz
MDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi43NWRlYWQzYjk2MGJhOWJj
NTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21w
bGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VO
b25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAg
ICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwog
CiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2
Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIw
YmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRl
VG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVI
YW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
Ynl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBj
YTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZl
NzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2Uq
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAg
IGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9z
ICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGls
ZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNv
bXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4
NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2Ny
aXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
CisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJ
SSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZm
ZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAg
aWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFT
Q0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250
YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVND
SUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAog
ICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hl
ZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZl
ciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlw
dFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlB
U0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGFlYjRi
NmNjNTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQuLjNjNWVhOWI4OWE5YzllOTAzNzBi
OThkZjUyODU2MzA2NDk5MDA3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9u
dEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50
LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252
ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFs
dWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAg
ICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjps
b2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNv
dXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VB
ZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAg
IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42
YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2Vk
U2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0
dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2Vs
ZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0
ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJl
cXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJj
ZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODcz
NzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRp
dGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2Rj
Y2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNl
bmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0
OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21p
c2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgog
I2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2Vi
QXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0
IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzcz
ZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJp
YWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUy
NmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4
MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAg
ICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5n
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNo
aXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQog
ewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50
KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBv
dXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8
U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
KmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVu
ZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERh
dGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRX
cml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92
ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1l
KCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hp
dmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2Vz
IG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRl
cyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBA
IC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5T
VUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2Vl
YjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEy
NzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBh
dXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1
c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1sIikgewotICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBb
ZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291
cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewot
ICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAg
IE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkK
ICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIz
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4
YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVO
YW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAg
ICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICsz
MDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAg
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRp
ZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAg
ICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9z
OwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50
KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNo
aXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09M
aXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRp
YyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNl
VVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1
cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAg
ICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFy
Y2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNv
bnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcg
KzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAg
YXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJp
bmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJj
MzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpy
ZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkK
IHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVt
ZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNo
aXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJk
LiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlv
bnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBp
bXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0
eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMw
MTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0
YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5l
KQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0
LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxl
RGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0
b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0
ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBE
aXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAg
cmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVt
cGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVh
a1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3Vt
ZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdz
KCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRh
LCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxh
dGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRo
YXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0
b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0
MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogCiAgICAgaWYgKG1fZGVjb2Rlcikgewog
ICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAogICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNGUzZGFmMWFkZTQ3MzE4Nzk1
YmFiYWY4NTJjMjM2MmIzOTk0OWJkZC4uZTU4YmNjMmFhN2Y4MTRkOTc3ZmY3ZDhmMjYyM2MzN2Vj
YmE3YzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0
byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7
CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA5YjVjYWQ5NTlhOGU2
ZjJjMmJmNzBlMWFlZTE0Mjg3NDU5ZDA2NjEyLi5hM2M2MGMzYjY5NmE4M2Q4MzFkODk3ZjgxNjdh
MzJiZTIzNzM3MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1l
LT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBk
YTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBm
ZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIx
ZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6
ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0
UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVy
KCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVm
bGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JD
cmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjZjZjY2Yy
YmQwODkyNTBjNjAzZmQwNGI3NGMzZWM4YzBlNDljNGYxLi5mZGZkMGVhYWYzYTUwMThkOTAwYmEx
YTZkN2E0OGFlNTczMmYzNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVD
cmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwog
ICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVz
b3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVE
YXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1h
aW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1F
VHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9j
dW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZl
RGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKIH0KQEAgLTE2NDksNyArMTY0OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2Fk
ZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNo
aXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTMsNyArMjI1Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVy
KCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAg
IGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
KyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmN2Yz
ZjM4NDRmMTg0NDdiZThkZDdiODJkM2E0NDM1MDAyMjE2NzYyLi5hMDBlMTRhNzNiMGU5NDZhMGEz
NzU3YjkzMTdjYjBmNDJkNGQ5ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0
IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAt
MjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFy
Y2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJj
aGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZl
PiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJz
ZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVs
ZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAj
ZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hp
dmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93
c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMy
Li5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJr
U3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25p
ZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBkNjg4ZDgwYTliZDg4OGQy
OWFiOTA2ZTY0NjcwNjAxN2NmYjY4YTRmLi4xMWY2NzAyZDFmNjhmZGViYWU0YWVhMzUyNjZlMDJm
ODQxN2RlMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc4
LDcgKzI3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0
aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZp
bmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2YzVlZTNh
OWIzMWFlOGI4NGRiOTIwYjY2ZWJmMjE0ZjI2ZWM5YWQ2Li5lOTFjOGY2MGQzYTk4YTllYjhkYTNj
ZTZiNDRmYWQyYmMzZWI1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTMxMDYsNyArMzEwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9
CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRp
YWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1l
LmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwg
cmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNTQsNyArMzE1NCw3IEBA
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3Qs
IGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVz
dCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGlu
ZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2Ny
aXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlZGVjZTEyY2Q3YTk2ZmViOTM1YzMzNDY2YzQ2Y2FlMDIw
ZTJmM2FjLi45YzNmNzRjNDJkYjhlN2JhZTk1NDA1ZjU0MGYzZTI4NzE5ODJlOTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRG
cmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBl
cldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcg
Kzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNo
ZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRp
YWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNv
dXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9s
aWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFt
ZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVs
bHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1
YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li4yZjJlODJjMmIxN2YzYzk0ZGVi
ZjBhNmE0MThmNDQzM2U0YWFiZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTMzNCwxMyArMzM0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAg
ICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVy
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJl
c291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgq
YnVmZmVyKTsKQEAgLTU3MSw3ICs1NjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQot
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURh
dGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVm
ZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBA
IC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0
byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkws
IG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0
aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1
cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFw
cENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3Qg
Y291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJf
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2
ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVk
IGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBj
b3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgog
ICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3Vy
Y2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlv
bkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYg
bm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBh
bm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHgg
b3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2Vy
ZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxv
YWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRo
ZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAg
IGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJj
ZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0
aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHko
KSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAg
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlm
Li5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBt
YXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2Fu
Q2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBm
MWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1
OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRl
ci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBk
YXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUu
Ljk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgp
KSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
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
ZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uODRhYTcyZGYxOTYw
M2ExOWZhYzhmMmQwZDc0MjljZmI4ZDU3ZTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
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
ZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4OC4uZGZiYTc2MWNiMDU4
NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI5LDggKzkyOSw3IEBAIHZvaWQgQ2Fj
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
aXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li5i
OGIzMGI3ZTA4MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4IDEwMDY0NAotLS0gYS9Tb3Vy
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
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZl
NGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1
MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2Ug
OiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCAyY2QxOWExMTBiMmI4NjkyM2Y0NjMxMjk5ZGEzNTUwNjNj
OGJiNTExLi45YzkwMGJlOGY0YzUyMTE0NzU2NjMwMTkxMWJiOTNiMGNlMzdhNmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNl
clN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBp
dCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdo
ZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwg
YW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYx
YmQ4Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAx
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
aXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJm
Y2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBS
ZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxp
emVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBk
ZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRm
YWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyAr
MzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmlu
ZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1
YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpA
QCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAg
IAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAg
ICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBw
ZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAg
IGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxv
YWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRp
b25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXgg
NzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1
MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5
ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYz
NDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2
ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYg
KzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBA
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3Rl
Ym9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBj
YW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAg
IFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFn
ZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7
CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2Vu
ZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmlu
Zz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1
cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2Ew
NWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyAr
ODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIg
PDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRU
eXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigp
LCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAK
IFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVu
Y2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcg
KzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIo
YnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdl
NmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4
IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFj
M2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBA
IC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBh
dGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2Jj
ODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2Fy
ZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAg
ICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhU
TUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0
NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZj
MjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJ
dGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250
ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0
Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBT
dHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5v
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRl
eCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFj
Yzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFk
ZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzlj
NTViOWFmZDM5MDAzNTM1Mzg1ZC4uZWFjODQxODNjYTNkOWE0NjQ4NzhjNmM0OGZjZTAyMjBhZGQ0
NzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
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
KEdTVFJFQU1FUikKQEAgLTczLDI2ICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
ICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwog
fQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29t
YmluZWREYXRhOwpAQCAtMTAzLDMwICsxMDksMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IK
ICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmlu
ZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5k
IGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9m
IGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4y
KSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0g
MSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0
dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYg
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0
byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7
Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAg
IGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7
CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAg
LTIwMiwxMCArMTk0LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVu
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7
Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBl
bGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwpAQCAtMjEzLDE5ICsyMDUsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5n
dGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwog
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
QEAgLTM1MywxMiArMzQwLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKLX0K
LQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSBjb25zdAogewpAQCAtMzcyLDQxICszNTMsMTIgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKLXsKLSAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAotI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQ
dHIoZGF0YS5nZXQoKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29u
c3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxs
cHRyKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBkYXRhLT5kYXRhKCk7IH0sCi0jZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0
IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIu
ZGF0YSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwotfQotCiAj
aWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07Ci19Ci0KIGJvb2wgU2hhcmVkQnVm
ZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKHRoaXMgPT0gJm90aGVyKQpAQCAtNDU2LDcgKzQwOCwxMTggQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAg
ICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBX
VEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5o
YXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3Np
emUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXIt
Pmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1
b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hh
cmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5
VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBl
ZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50
LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCksIHNpemUo
KSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBVU0Uo
Q0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0YVNlZ21l
bnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5k
aWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisK
K1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVh
dGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2Vn
bWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAgIFtdKGNv
bnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdMSUIp
CisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEo
ZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAg
ICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAor
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6Y29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9CisK
K3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTM4LDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2Vn
bWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92
ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAt
IHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyNiArNTUyLDE2IEBAIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmll
dyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBk
YXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkg
eyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUg
YSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25z
dCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU4Nyw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
fQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVy
LmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgz
OTM2OGFkLi43ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxMzggQEAgY2xh
c3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRC
dWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11
dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNl
Z21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
ID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcg
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9V
TkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChO
U0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
R1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNh
dXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQg
aWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNp
bmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNh
bGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9u
IGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29w
eWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUg
U2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0
RGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJy
YXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQK
LSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50
byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAg
ICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQot
ICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlv
bjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6
ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2
b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQg
c2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVy
IG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRl
IGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5k
aWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3Qg
UHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0K
LQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAg
ICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWlu
UHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAj
aWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAg
ICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
RGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAg
ICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0
YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hh
cmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4gewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsK
KyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRh
UmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRl
cz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
Qnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAg
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVy
PiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0g
ICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5k
IGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJh
eUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVm
ZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorICAg
IGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYK
KyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsK
KyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYp
IGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRh
dGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMDIsMTAy
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
IHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8g
Q29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQg
dmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFr
ZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9y
UG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZl
Y3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wg
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRl
cm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNj
ZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVf
djxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3Qg
Y2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8v
IFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBk
ZWxldGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7
CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBp
bmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0
cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKIGlubGluZSBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJl
ZigpKQpAQCAtMjY2LDIzICszMDUsMjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7
Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdt
ZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3Jl
YXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZl
MmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVu
dFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdv
cmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
RGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93
UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhk
MDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0Yzdj
OTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsK
ICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEy
NmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5
MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsMTcgKzQxLDEz
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcg
Rm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9u
LUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgp
KSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0
YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4
ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFk
YjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERh
dGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAq
cG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlw
ZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBu
Z0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0
YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkw
NTdiYmYzNjRhYmYxODM4YTliODUwLi45ODA1NDdiOGNjNGM0YTg4Y2ExNTVjYmIxNzgyMGFmODVl
MmRjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0
YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2Vy
KXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9z
aXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7Cisg
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAg
TlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcg
KzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRp
b24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihO
U1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTUsMjcgKzk1LDI2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwog
fQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAK
LVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QK
K1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0
YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3Nl
Z21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxw
dHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAg
ICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKQEAgLTEyNiw3ICsxMjUsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitS
ZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0
aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2
Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
UGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2Jq
ZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3
Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIw
MGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBA
IHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBp
bml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0
YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAg
dW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDggQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQog
ICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFp
bmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJy
YXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJs
IGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFs
dWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJl
ZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3
M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtl
eWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5k
QXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZp
bmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCks
IG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4
MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVu
Y29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVy
cmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZk
NzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFu
dEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxk
ZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5
dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1
OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQx
NDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJH
bGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThj
MTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2Vl
NzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJl
ZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDRlOTQ5
ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAuLjEyNTg2MmU3MmE5ZjlkODY5NmNl
MTZjYWNmZjZiZjcyMDdiNDVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0
aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9CiAK
LVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEs
IEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQog
ewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzQ0MjAwNGYw
MGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRjZC4uNGM1YzhhMzk2MzNhMDY0Nzg5OGI1MmEz
OTQ1MjVmYjFhZmIxMmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBWaXNpYmlsaXR5IDog
Ym9vbCB7IFZpc2libGUsIEludmlzaWJsZSB9OwogICAgIGVudW0gY2xhc3MgT3JpZW50YXRpb25G
YWxsYmFjayA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiA9IE9yaWdpbjo6
TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sIFZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0
ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVk
LCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSku
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAK
ICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4p
CiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFj
OWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJl
MGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZN
b3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2
MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywg
VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2Rl
bD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0
YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7
CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBA
IC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgq
bWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
aW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2Yz
ZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8g
IndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0
YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBv
ZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQg
PCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMy
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2
YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0
dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0
eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6
ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcg
KzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAg
ICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsK
KyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgK
aW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2Fm
ZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZp
bGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9y
IGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNl
IHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdv
ZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMg
YSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9y
dCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8v
IHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3
YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQt
ZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJm
ZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVu
dHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYg
KGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkp
Ci0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlm
aWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQog
ICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgp
KSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNP
TlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyop
cHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmls
XTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBp
cmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5n
ZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwor
ICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNw
b25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5k
IGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2Fs
bGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tT
ZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
Y2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9u
UmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNp
bmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAt
MTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1
dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5
SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1
ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5
SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxv
YWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIs
NyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byBy
ZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkp
OwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2lu
Z1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUx
YzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0z
MDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3
ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29t
cGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNl
aXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRh
UmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMWE0M2M3ZGVkMjc2ZTJjM2U1ZjZmNDNhMzhmMDUx
MTI3MjA2ZDBhMy4uYWJkODFlNWYzYzFlYTUwZTQyMmUyZmEzYzJiYTFkMThjZmUzMWFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjph
cHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBz
aGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJT
dGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAg
ICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFW
U3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uMzJjNWE2NjhhMTZh
ZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjE0LDkgKzIxNCw4IEBAIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
ICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0K
IApAQCAtMjI4LDcgKzIyNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNyw3IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVj
b2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZp
bmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9i
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0
NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMx
N2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBG
b250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxj
YWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5
YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3Rl
ZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQq
IGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNv
ZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwor
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkg
PSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJl
ZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVm
ZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRv
IHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0
aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8v
IENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBk
YXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBH
ZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVy
IG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkg
dG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0
IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5
dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHBy
b3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRp
b24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRh
dGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxs
YmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4
NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1
bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlk
ZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIx
ZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3
ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAg
LTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9m
b250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVk
ODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5
OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcg
KzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lk
KiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAg
ICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29u
KTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYz
OTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAg
KzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RG
b3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVj
ayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0Yo
Q1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRp
b25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2
YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEz
NDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGli
cmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEy
YTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYw
MWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBA
IC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hh
cm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwg
ZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRG
YWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2Ug
PSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNp
emUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFC
TEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggY2RlZDRh
NjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMy4uYjc0OWZjMTU4ZGZhYmVmZDNiZDhj
NDU0OThiYTBhNWIyOTNiZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQy
NCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0
b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJv
b2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaAppbmRleCBkODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4
NDY4Li4yYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFq
b3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZm
ZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1
MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29k
ZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVk
RGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5j
b2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsK
LSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIi
LCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7Cisg
ICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwg
W3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6
ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJ
bm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJE
ZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNiYjQ5ZDE3MzYy
ZjcxMmQyNWRmZTgyNGRmYzFjMzgxYTVkYTAyOTMuLjNhMjAxNTc4MDE0ODgxMGFjZTU0ZGY3YjA4
ZTRkZjdmZDUyMzdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0
RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJU
eXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6
ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBh
eWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAg
d2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0
YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2Mw
MWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJE
YXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7
CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4
dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIq
KiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4
dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewog
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29k
ZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAg
ICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBz
c2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAg
c3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdw
b2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFy
dEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdo
LCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBh
eWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uN2JiMjc0
M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAg
IEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
cGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5
bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAgICAsIG1f
cGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKICAgICB9
CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNl
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
NDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0
ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0g
bWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAg
aWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNl
bmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykK
LXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFi
NDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRl
OGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFj
NGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzks
MTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
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
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilp
bmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBp
ZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRl
eDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVi
b2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4
Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2
MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBl
cihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVy
IHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3Rl
Ym9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwog
ICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlw
ZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAg
ICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmls
XSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpp
bmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0
MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0
ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFz
dGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3
ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5
cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBl
c1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7
CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4p
OwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFk
eVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwor
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRl
M2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4
LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBl
c10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtk
YXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJk
VHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJv
YXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsK
LSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAg
ICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJp
bmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAg
ICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
KQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAg
ICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0
Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQ
YXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Qk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMg
U3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2Fy
ZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4
KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7
CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQ
YXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3Rv
bURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXRE
YXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkg
ewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YS4uNjIzNjRkNzEzYzk1
YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZv
cm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNC
bG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3Li4xMDgyODEx
MzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRh
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0o
Ym9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2
Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcw
ZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1Yjcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAg
ICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAg
IGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBh
OTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3Yzgy
NTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyAr
OTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5z
ZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2Vs
ZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZC
eXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilz
dHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgz
ZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2
ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICBy
ZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5n
LgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEz
Nyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFy
ZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVz
aCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1
ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwog
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEz
IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAg
IGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAm
JiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZp
bmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRj
aCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gp
KTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1h
dGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVy
ZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBw
dXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3Vu
ZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFy
eVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9i
b3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5
Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxl
SGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9z
ZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRl
eCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMy
MWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQog
ICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVC
dWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVy
LT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLjNjYTIwODIy
YzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxl
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRl
c1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCAyYjMxMjg1ODcwMzAzZDA5YjAyNDUzNjVkNjFhYjg5MTExMWRhYWI1Li5hYWNjMzdjZDI4
NzI4MGYxYmUwMDg3OTczNTFhOThiZjhiYzFiZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05NzgsOCArOTc4LDggQEAgc3RhdGljIEhH
TE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAg
IENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2Jh
bFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAg
ICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBG
QUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1
Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAg
ICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAg
ICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0
ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0
MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVk
NzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVm
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
cnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1
MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1v
Y2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYg
KCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAo
IWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcp
OworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJh
eS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZv
aWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJp
bmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZp
Y2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsK
IAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdW
aWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCks
IHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVz
cG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250
YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2
Li5lOGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSAr
NzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0g
ICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYg
KG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
KQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwor
ICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGln
dW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAg
ICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
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
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0
MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1s
RG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9i
YWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxv
YWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAg
ICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNh
ZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQz
ZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9p
ZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2Ny
aXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRl
eCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZm
ZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsx
MDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwg
ZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRh
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYg
ZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBk
YXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRh
ID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZl
cmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2
OWM1NGIwOWQ3Mi4uNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVm
ZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEu
cmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRN
ZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIy
YzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdj
YmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2so
V1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9i
b2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uNWM0Yzhl
NzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47
CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2lu
ZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRG
b3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1
NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEy
ZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwK
ICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1f
c2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOwor
ICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5
ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRk
MjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3
IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9u
JiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0
Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0g
ICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07
CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyAr
NjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFn
ZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9u
c2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEo
KSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBz
dG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZm
ZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBA
IC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdl
UmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAg
ICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAg
aWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9
OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5
LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgxODMwZTM5
NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhj
MDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29k
ZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkp
OwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+
ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwog
ICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19m
cm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFk
N2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1
OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJi
MmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBw
dWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHko
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdh
M2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAg
QEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRh
U2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRh
dGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29u
c3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRj
ZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVu
Y29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0
YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNv
bnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3
OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRh
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJB
cmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFz
ZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFm
ZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+Ojpk
ZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNl
Y3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUg
dXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURh
dGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZv
bnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1J
bkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0
MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBs
aXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3
MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMy
Yzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5k
YXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxm
LT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291
cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFl
ZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMx
MTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhh
bmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVm
PFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4
MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1
MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hh
cmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEs
NyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhl
ZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0
aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsK
ICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0
KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYx
LDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVz
QW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNp
emUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRh
U2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0
YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICsz
NTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVw
ZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlT
aXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJC
b2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVm
ZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkg
fX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRl
Y29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNl
SGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDEx
MWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmlj
YXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3Mg
Q3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEz
MDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2
MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8
U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5z
ZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0
aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsK
ICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcx
NDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5
ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6
Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSog
Y3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52
YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBi
MzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAx
YjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2Yw
OTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0
YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9C
SkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAg
ICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJ
bWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzZhNmY0
ZmIwN2YwYWI5ZGRjN2E0NjE4ZmVkNDIyZWMzODk3NDAzNS4uMmY0NDhhNzYzOTI3ZTAyZWNjMTU5
NzU2MDJjOTAxYjcxOWExYTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAg
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEm
IGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0K
LXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQor
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1
bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRl
MTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29u
c3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsK
IApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAo
IXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNzJk
MGQyYzkyZDdkZWQ0NWUwZTQxMGI0MWRjYjhmYjRkYTVhZTg1Li42YmRhZTUxNTUyY2UwNDY4YmU5
M2I1OGIzYWY1ZjBhMWNhZjliNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3Jl
QXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAg
IGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVl
KCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBh
bGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBh
ZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGln
aHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0
OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9y
ZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05l
d0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJD
b3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFm
MDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2Zk
M2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJv
cFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRh
dGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8q
IGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0
YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEs
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25E
YXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21E
YXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43
MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEy
MzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVn
YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJm
ZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJkNTcwMmI5
YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQog
ICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlv
bnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAo
KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byByZWdpc3Ry
YXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lz
dHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNi
NzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUw
NTE0ODdmNzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgog
ICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNl
dFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAg
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1d
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmlu
ZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0
bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZl
cikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAg
ICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+
dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlw
ZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6
bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rp
bgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdl
KSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsK
ICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRp
b25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3
ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJl
cXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZv
ckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFz
dGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRp
ZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERh
dGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6
OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5
MmE4MjQwOTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJv
b2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJ
Zk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWE4MTZmZGIzMTgzYTE5YjY3OWU4NzcwM2EwZjQ0MGU1
YWI5MDkwMy4uNzIzY2ZlNWI3Mjc2MTVmNmVkMThiNWYyNWQxZTgwZGI3MzMxZjk2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExODEsNyArMTE4MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VG
aXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJl
c3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRl
OTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
LT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0g
eyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAg
ZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRh
LT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
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
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3NWNiNzUx
MmNjYTY3NDc0YTU1NDI0YWQzYTI4Y2Y2YzdlZTBhY2Q1Li40Yzg2MjczYzNmYWNhYTBhNjQyZTlm
NzVjNGQ2YmRmNDFhNTNhMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBA
IC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRl
cjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEg
PSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9y
IChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1
bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02
NjI1LDcgKzY2MjUsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRj
aE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0
YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1
ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJl
dHVybiBOTzsKIApAQCAtNzU5Niw3ICs3NTk2LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lz
dGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQK
IHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBO
U1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIs
IChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBm
b3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBu
YW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsK
KyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07
CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29u
dmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2
Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYWY3ZTA3OWFlNDFmN2FkZTNmYzhjYWY1
ZDg4MWYyY2ExYmEyMzc0Li4xYjNmZTg2ODlmMTc5NTc1MDY2NzMwNDFiMWU2ZDFiNzM2NmQxMzlk
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3
MjYwZDk0ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9w
YWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4u
OTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygp
IGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAg
dm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5
ZWRkZjA1MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciog
bG9hZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291
cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
LCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42
ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyks
IDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFy
ZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsK
IAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZl
IHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAg
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJk
TmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZm
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
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
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjBmODRh
NDVjMzgwMzVmMmRjZTkyNWNiZWUyYzMxOTkyZTY0MDMyZi4uM2NiNTA2MjRiZjBkN2E4MTEwMmY3
Yzg1NDRiMzQxZGI5NjYyN2JkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIz
OTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNi
NjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRh
ICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEg
PSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5k
YXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBk
YXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0
cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDli
Yzc0ZWY2MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5
MjkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBm
aW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0g
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
KyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
aW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMx
NzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAt
NDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxl
bWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3Qg
aW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkx
NDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3
NzZlNjJkNjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2
MjlmYzBiN2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1
ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
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
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
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRh
OS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJj
ZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291
cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1l
bW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShX
VEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXgg
YjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDEx
N2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVi
bGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4ZTg3MWIwYWYxYTM0YjA1NzIwMDFiM2Nh
Mzc5ZDYwYjkxMDVlMjkuLmMyMDNiMTExYjRhODljYTI0ZGZkNzI3Y2NhZWExZThhZGQ3MDdmMDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjov
Lzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJD
b3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3
Y2E0NjguLmJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC00MywzOCArNDMsNDAgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmlu
Zygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVF
KFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBj
b3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7
CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXIt
PmNsZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4
NSwxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRp
Z3VvdXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
dGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIs
IDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRh
KClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDcgKzk5LDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwpAQCAtMTExLDcg
KzExNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxh
cmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
dmVjdG9yMCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0
b3IxKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKQEAgLTE1MSwxNSArMTU0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEs
IG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmlu
YXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhh
Yml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0
aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgogICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKKyAgICBhdXRvIGNsb25lID0gc2hh
cmVkQnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVy
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25l
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBA
IC0xNzUsMzAgKzE3OCwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZics
ICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wn
fTsKLSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAg
IGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWpr
bCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsK
KyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Qu
c2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAi
Z2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAg
ICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIo
aWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRh
dGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1
ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRh
KCksIGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6
ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFz
Q2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9
CiAKQEAgLTIxMCwxNSArMjE2LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IGJ1ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7
J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdi
J319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7
J2EnfX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
LCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAn
YycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScg
fSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIx
MTAuLjg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNE
YXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="471953"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446529</attachid>
            <date>2021-12-09 05:46:01 -0800</date>
            <delta_ts>2021-12-10 14:19:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211210004558.patch</filename>
            <type>text/plain</type>
            <size>415161</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMDIyNzUwMTQ3ZDYx
Y2FmNGI4NGQ4OGVhZmY4NTRmNzBlYzRhZS4uZmNiYWZmMWUyYmEwODQ5MDdmYjcyNmUzOTkwYzk4
N2E0MTFmYzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92
ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9Q
QUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVhY2M2MmQ0
MGIwLi42OGNkMzQzYjVkNGQzYzg2MzhhMGFlNTVhYzk1ZTg2YjAyZTVhNjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAg
cmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVk
QnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAg
ICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAg
KElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmRE
YXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlv
bkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
OgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVB
cHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3Ondp
dGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdp
bik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVF
bGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
U3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIENvcHkgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIg
ZXJyb3Igd2hlbiBmYWlsaW5nIGl0cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggZDA4NDQ5YzE0OTI5MDRkZjhlMzRlOTJmYzE3NWVjOGI0YjVh
ZmNiOC4uODE3OTUxMjExM2JjNjgzZjliYWU0OGExZWFlYTgyMjk5ZTYzYzRiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06Cisg
ICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAo
LVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291
cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0
ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwog
MjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4
dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3Rl
eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1ODQwZGUxMTY3NzE5YTA2MzliOGEy
MWJiZGFlOWQ4NGVmN2Q4OTJhLi41OWNkNDg3YWFkYzE4MGEwMDhkNmFkN2M3MTUyNWE4MzdlZTJh
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEt
MTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0
aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBh
bmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNw
cDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5oOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8g
V2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4
Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0
aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAg
ICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlm
IChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0
b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxl
bmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTVi
Zi4uZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiB2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQ
cm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1
dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3Jl
cHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlw
ZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOWIzZjg0MDc0NWQxYTA2
OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNy4uOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3
YzlmZjgzMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90IENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRjaE9u
KGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgcmVz
dWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgpOwog
ICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0
OTliYjkwZGQ3ZjAwNzFkNDI0Yy4uNmU1YzQ1NjRkNWM3NmUwNDA0MjM5YzUxNDkxZjkxYTU5NGEw
MWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMw
MSwxMyArMzAxLDEzIEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+
JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwg
cmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
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
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJu
VmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0
V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOwor
ICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNj
M2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBF
eGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0
Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAg
UmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9k
eSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4K
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAg
ICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNl
Qm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKaW5kZXggOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2
OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRp
b24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJv
cik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVz
aW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1E
YXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVk
YmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQy
YzlhNzIxNzNjNTA1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAog
ICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3Ig
KGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwog
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRl
YWVjNTc5N2EzLi4wNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgYm9vbCBrZXlJZHNN
YXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKICAgICBh
dXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChh
LmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVk
aWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFu
dFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRv
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZp
cnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWly
LmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAg
ICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtl
eVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vj
b25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0MGJlNGY2NjE3MjVkOGJmOGFjLi5kNjViMjdiZmU4
YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXIm
IG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8g
c2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25l
ci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2Jz
LCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBS
ZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlm
IChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZv
cm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQot
ICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5E
YXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50
YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJl
dHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigp
KSB7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6
OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0
KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGlu
ZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVz
KSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2Vh
cmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQ
QUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmco
KSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJy
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
ZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdhYzU1OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLjM3
YjgzODZhNzhhZTg3NWRjMjU2M2ViY2IyYTc4ODg1ZDMwYmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIGlmIChhdXRvKiBj
aHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUs
IGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1E
YXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAg
ICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRU
eXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzYyLDcgKzM2Miw3
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsK
ICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRleHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2Yzcx
OGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5iOTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgx
NDhiMmU2ZTc5ZTc2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYm
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1
bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5
RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3Jt
RGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAg
ICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIo
KS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2
NWJmNWE1YmIuLjM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWViNTQ3YTFiNWVmMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBjb25z
dW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2NF90
IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0
MjEzNTJkZGQwNDEuLjYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcxZDgxNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBA
IC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdo
dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwor
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZm
YTMyZDA0YTQ1NzZjMDYuLjgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDYsNyArNDYsOCBAQCBjb25zdGV4cHIgdWludDY0
X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBT
aWduYXR1cgogCiBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
YXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZm
ZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1
b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUy
Y2NjYzQ4NzcuLmExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBA
IC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktl
eURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVu
ZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29u
c3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApp
bmRleCA2NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFm
MGVmNDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAg
LTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9v
bCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEm
KTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1
YTE2ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0
NWM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4
Niw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9i
amVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ui
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdl
IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRv
IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAg
aWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3Jl
Il9zIH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBk
YXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9z
IH07CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAg
IGhhc1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtl
eUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgg
a2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sg
Zm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFs
dWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1
dG8gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAo
IXZhbHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0
aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNr
IGZvciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rp
b24pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJf
cyB9OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJl
Y29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpA
QCAtMjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtl
eSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtl
eSA9IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0y
MTMzLDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJh
bmdlLnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktl
eURhdGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2Ui
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0
NDMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4
UmVjb3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlk
KCkgJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgp
ICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJl
Y29yZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAg
LTI1MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRD
b3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3Vu
dCA9IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJ
REJLZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAg
IGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBp
ZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1
cHBlcktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgp
IDogcmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2
MjNiZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJl
YTY1YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93
ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJl
IHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVk
ZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5
MzhhOWIyMDhlZjM2ZjY4MDNjNC4uZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZkMmQ4Yzcy
OTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAKICAgICBm
b3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKICAgICAgICAgc3dpdGNo
T24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9
LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAz
MDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi43NWRlYWQzYjk2MGJhOWJj
NTJhY2M3MjFlOGE5MWNiODQyMGE2NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21w
bGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VO
b25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAg
ICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS0+bWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwog
CiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2
Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIw
YmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRl
VG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVI
YW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
Ynl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDUyNTEwYzMwODE4ZjBj
YTkxNmE4ODQzNzdkMjI0YTFhYmE3OTViODUuLjg1MTQ3YzA5NjFjOTk3MzE2MzFmMGVkZmI5ZWZl
NzRlNWMzNmNhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2Uq
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAg
IGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9z
ICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGls
ZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNv
bXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4
NjUwNjIyZDcuLmI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRiMDJiMWUyN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fc2Ny
aXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
CisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICghbV9jb250YWluc09ubHlBU0NJ
SSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAgICBtX2NvbnRpZ3VvdXNCdWZm
ZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAg
aWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFT
Q0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgbV9jb250
YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICBp
ZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVND
SUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkg
fTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAog
ICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hl
ZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CkBAIC04MSw2ICs4Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3NjcmlwdEJ1ZmZl
ciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlw
dFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlB
U0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGFlYjRi
NmNjNTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQuLjNjNWVhOWI4OWE5YzllOTAzNzBi
OThkZjUyODU2MzA2NDk5MDA3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9pbkRvY3VtZW50
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxlbWVudCYgZm9u
dEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZhY2VFbGVtZW50
LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZvbnQgPSBjb252
ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFs
dWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOwogICAg
ICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAgICAgICAgICAg
ICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjps
b2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2ltbWVkaWF0ZVNv
dXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1t
ZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VB
ZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgICAg
IG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsKICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li42
YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2Vk
U2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0
dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2Vs
ZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0
ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJl
cXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJj
ZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmZhMTQ2N2RiOGVkODcz
NzQ3YzA0NDczYjE0YzY4OWFkN2I3MGExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9t
aXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRp
dGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uZjVmY2Rj
Y2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNl
bmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0
OwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21p
c2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0
YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0Fu
ZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgog
I2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9y
bWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2Vi
QXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0
IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
UlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzcz
ZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJp
YWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBhODViN2FhNzUy
NmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiLi5kMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4
MTg3MDQ5OWMyZjYxZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAg
ICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5n
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNo
aXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpz
ZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQog
ewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50
KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBv
dXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0
ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8
U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
KmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5y
YXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVu
ZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOworICAgICAgICAgICAgICAgIG91dERh
dGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRX
cml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92
ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0
aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBF
ZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1l
KCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hp
dmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2Vz
IG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRl
cyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBA
IC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5T
VUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRG
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2Vl
YjFmMWUzN2UzZjMuLjNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEy
NzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBh
dXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1
c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAhPSAidGV4dC9odG1sIikgewotICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBb
ZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291
cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewot
ICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAg
IE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkK
ICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCkpOwpAQCAtMjMyMyw3ICsyMzIz
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEzY2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4
YzQ0YjY3OWUyMjc5Li5hZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVO
YW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAg
ICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAgIH07CiAKQEAgLTMwOSw3ICsz
MDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAg
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRp
ZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAg
ICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9z
OwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50
KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNo
aXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09M
aXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRp
YyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNl
VVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1
cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAg
ICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFy
Y2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNv
bnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMwLDcg
KzYzMCw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAg
YXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJp
bmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY0NCw3ICs2NDQsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJ
bWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRB
bmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IDJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2QuLjVmOGJj
MzQ3N2MxY2EyMWIwYzcyMjcyMjdhYWYyZGE0YjE5MmJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2LDE1IEBAIHZvaWQgRWRpdG9yOjpy
ZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9y
bWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkK
IHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoaW1hZ2VFbGVt
ZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNo
aXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7
CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhpcyBmdW5jdGlvbiBpcyBhd2t3YXJk
LiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0aHJlZSBzZXBhcmF0ZSBmdW5jdGlv
bnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5IHVzZWQgaW4gV2ViS2l0MiB0byBp
bXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZDp0
eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDc1MjMw
MTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEuLjEwMTZkY2YzYzE5OWU1NGNhODE0
YzI2NDVhOWE4NTk4YTVjMWQzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5l
KQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0
LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxl
RGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0
b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0
ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBE
aXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAgICAg
cmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBz
ZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVt
cGxhdGUoKQogewotICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVh
a1JlZigpOworICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3Vt
ZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRpbmdz
KCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRh
LCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVtcGxh
dGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3JlIHRo
YXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0
b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0
MzBmZTBmZjczLi5kNzBiYTllZmYxYzkyYThkMzAzZjJlZTQ3OGY1ZDQ2ODVmNGYxODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTEwMywxMCArMTAzLDEwIEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogCiAgICAgaWYgKG1fZGVjb2Rlcikgewog
ICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7
CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAogICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNGUzZGFmMWFkZTQ3MzE4Nzk1
YmFiYWY4NTJjMjM2MmIzOTk0OWJkZC4uZTU4YmNjMmFhN2Y4MTRkOTc3ZmY3ZDhmMjYyM2MzN2Vj
YmE3YzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29s
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0
byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNv
dXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7
CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVl
OwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA5YjVjYWQ5NTlhOGU2
ZjJjMmJmNzBlMWFlZTE0Mjg3NDU5ZDA2NjEyLi5hM2M2MGMzYjY5NmE4M2Q4MzFkODk3ZjgxNjdh
MzJiZTIzNzM3MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1l
LT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBk
YTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi45NzRmMjJhMmRhN2EwMmM2NDg5YzFiNTBhNWEyMjBm
ZTQ0YjE5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJj
ZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENv
bnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIx
ZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6
ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0
UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVy
KCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVm
bGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JD
cmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjZjZjY2Yy
YmQwODkyNTBjNjAzZmQwNGI3NGMzZWM4YzBlNDljNGYxLi5mZGZkMGVhYWYzYTUwMThkOTAwYmEx
YTZkN2E0OGFlNTczMmYzNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVD
cmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwog
ICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVz
b3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVE
YXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1h
aW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1F
VHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9j
dW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZl
RGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKIH0KQEAgLTE2NDksNyArMTY0OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyLnN0b3AoKTsKIH0KIAotU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2Fk
ZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNo
aXZlRGF0YS5nZXQoKTsKIH0KQEAgLTIyNTMsNyArMjI1Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogICAgIGZyYW1lTG9hZGVy
KCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAg
IGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsK
KyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBy
ZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmN2Yz
ZjM4NDRmMTg0NDdiZThkZDdiODJkM2E0NDM1MDAyMjE2NzYyLi5hMDBlMTRhNzNiMGU5NDZhMGEz
NzU3YjkzMTdjYjBmNDJkNGQ5ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0
IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAt
MjI4LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFy
Y2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJj
aGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZl
PiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJz
ZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVs
ZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAj
ZW5kaWYKQEAgLTYwMiw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hp
dmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVE
YXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93
c0Fib3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCA5YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMy
Li5jNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJr
U3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25p
ZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBkNjg4ZDgwYTliZDg4OGQy
OWFiOTA2ZTY0NjcwNjAxN2NmYjY4YTRmLi4xMWY2NzAyZDFmNjhmZGViYWU0YWVhMzUyNjZlMDJm
ODQxN2RlMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc4
LDcgKzI3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0
aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFu
ZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZp
bmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2YzVlZTNh
OWIzMWFlOGI4NGRiOTIwYjY2ZWJmMjE0ZjI2ZWM5YWQ2Li5lOTFjOGY2MGQzYTk4YTllYjhkYTNj
ZTZiNDRmYWQyYmMzZWI1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTMxMDYsNyArMzEwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9
CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRp
YWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1l
LmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwg
cmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNTQsNyArMzE1NCw3IEBA
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3Qs
IGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVz
dCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGlu
ZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2Ny
aXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9i
c2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlZGVjZTEyY2Q3YTk2ZmViOTM1YzMzNDY2YzQ2Y2FlMDIw
ZTJmM2FjLi45YzNmNzRjNDJkYjhlN2JhZTk1NDA1ZjU0MGYzZTI4NzE5ODJlOTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRG
cmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBl
cldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTc2LDcg
Kzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBDYWNo
ZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRp
YWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNv
dXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9s
aWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOZXdGcmFt
ZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBz
dGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVs
bHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1
YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li4yZjJlODJjMmIxN2YzYzk0ZGVi
ZjBhNmE0MThmNDQzM2U0YWFiZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTMzNCwxMyArMzM0LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAg
ICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVy
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJl
c291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgCiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgq
YnVmZmVyKTsKQEAgLTU3MSw3ICs1NjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQot
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi43MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU2MSw3ICs1NjEs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURh
dGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0
ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVm
ZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBA
IC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVz
dCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0
byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkws
IG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0
aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1
cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFw
cENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3Qg
Y291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJf
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2
ODkyZWU2Li43MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFhMjZkYjBkODI4YzYzMzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKQEAgLTI1MywxNiArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Um
IHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVk
IGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBj
b3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgog
ICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3Vy
Y2UuZGF0YSgpLmNvcHkoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5tYWtlQ29udGlndW91cygpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlv
bkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3OSw3ICsyNzcsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYg
bm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBh
bm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHgg
b3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2Vy
ZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxv
YWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRo
ZSBmYWxsYmFjayBlbnRyeQpAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAg
IGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJj
ZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0
aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHko
KSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAg
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlm
Li5kYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUhvc3QgewpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBt
YXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKIAogICAgIGJvb2wgY2Fu
Q2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBm
MWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi42NzEwOTU3YzNhYjc0YTc1
OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRl
ci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBk
YXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUu
Ljk2OTZkZTE3NmQxNTliMTA3NjRiZWMzNTI0M2VkZGZjY2FjMGZlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcApAQCAtODE1LDcgKzgxNSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgp
KSB7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
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
ZXggNGYyMjhlOGQwMzg5YjhiOGNiN2Y0MTQ4NmZkYjc4MWM5YmY2NWJkMi4uODRhYTcyZGYxOTYw
M2ExOWZhYzhmMmQwZDc0MjljZmI4ZDU3ZTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
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
ZXggM2U0NDZmYjkxNzRmZjY4MjAwMDExNGE3MmEzZTJhMDEwZTc4MTA4OC4uZGZiYTc2MWNiMDU4
NjRmNTQyNDUyM2JhMzdjZDU1YzYwMDVkZWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI5LDggKzkyOSw3IEBAIHZvaWQgQ2Fj
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
aXB0LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li5i
OGIzMGI3ZTA4MmNjYzE4ZWM1M2IxNjBhNzhkNmY5YTI4MDFmMmM4IDEwMDY0NAotLS0gYS9Tb3Vy
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
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZl
NGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5hMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1
MDcwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2Ug
OiB1aW50OF90OwogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk3LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAppbmRleCAyY2QxOWExMTBiMmI4NjkyM2Y0NjMxMjk5ZGEzNTUwNjNj
OGJiNTExLi45YzkwMGJlOGY0YzUyMTE0NzU2NjMwMTkxMWJiOTNiMGNlMzdhNmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5NTUsNyArMTk1NSw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNl
clN0eWxlU2hlZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBp
dCBmaW5pc2hlcyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdo
ZW4gdGhlIGxvYWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwg
YW5kIHdoZW4KICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAg
IGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMTY1YWE4MDU4YTAzOTBiNDUxNTc5YTE0NzYx
YmQ4Njc5NDkzNjQzMy4uMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMyNyAx
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
aXplci5oCmluZGV4IGZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEuLmJm
Y2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBS
ZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxp
emVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDY4YjBk
ZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQuLjNlZGQ5YzcxYmIyN2U1MGZkZmRm
YWNlZTI3MWVmZWZiN2NiMjkxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyAr
MzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmlu
ZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwCmluZGV4IDk2YWQwODI1NDNkZDUzYTg3OWJlNTFjNmQ5MjFkN2FmZmY0MmU4ZTAuLmQ2ODA1
YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKIHsKLSAgICAKKwogfQogCiBTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQpA
QCAtNzEsMTUgKzcxLDE1IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgICAgIGNhbmNlbCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAg
IAorCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAg
ICBmaWxlLmZpbGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBw
ZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAg
IGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxv
YWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRp
b25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXgg
NzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3Ni4uM2Q4MGQ3YTFkNDI0NTg1
MjBiZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5
ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYz
NDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEwNDM2
ZWU3Zjc5NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDYg
KzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwpAQCAtODIsMTQgKzgzLDE0IEBA
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3Rl
Ym9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBj
YW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAg
IFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBj
b250ZW50T3JpZ2luOwpAQCAtMTE5LDE3ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFn
ZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7
CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2Vu
ZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplOwpAQCAtMzI4LDcgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmlu
Zz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1
cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2Ew
NWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyAr
ODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIg
PDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRU
eXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigp
LCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAK
IFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVu
Y2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcg
KzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIo
YnVmZmVyLmRlY29kZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdl
NmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDYg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4
IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmE3ODhmYjczMGVkYzFj
M2VmYWRlODcwYTQwMTFmOGM0YmJhYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBA
IC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0
YWJsZUZvckxvYWRpbmcoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBh
dGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2Jj
ODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2Fy
ZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAg
ICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhU
TUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0
NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLmJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZmMGJjYTU0MzY0YWZj
MjBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJ
dGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250
ZW50OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0
Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBT
dHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5v
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRl
eCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFj
aG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4uYTFj
Yzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3Qg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFk
ZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzlj
NTViOWFmZDM5MDAzNTM1Mzg1ZC4uZWFjODQxODNjYTNkOWE0NjQ4NzhjNmM0OGZjZTAyMjBhZGQ0
NzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
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
KEdTVFJFQU1FUikKQEAgLTczLDI2ICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
ICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwog
fQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29t
YmluZWREYXRhOwpAQCAtMTAzLDMwICsxMDksMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IK
ICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmlu
ZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAot
ICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5k
IGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9m
IGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4y
KSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0g
MSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0
dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYg
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0
byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7
Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAg
IGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7
CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKQEAg
LTIwMiwxMCArMTk0LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVu
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7
Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBl
bGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwpAQCAtMjEzLDE5ICsyMDUsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5n
dGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwog
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAg
ICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0
aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21l
bnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
QEAgLTM1MywxMiArMzQwLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRvIGl0
ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKLX0K
LQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSBjb25zdAogewpAQCAtMzcyLDQxICszNTMsMTIgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKLXsKLSAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRh
dGEuZGF0YSgpOyB9LAotI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENG
RGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQ
dHIoZGF0YS5nZXQoKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29u
c3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxs
cHRyKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBkYXRhLT5kYXRhKCk7IH0sCi0jZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0
IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIu
ZGF0YSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwotfQotCiAj
aWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07Ci19Ci0KIGJvb2wgU2hhcmVkQnVm
ZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKHRoaXMgPT0gJm90aGVyKQpAQCAtNDU2LDcgKzQwOCwxMTggQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBj
b25zdAorQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAg
ICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBX
VEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5o
YXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3Np
emUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXIt
Pmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1
b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29u
dGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogU2hh
cmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5
VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBl
ZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50
LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCksIHNpemUo
KSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBVU0Uo
Q0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0YVNlZ21l
bnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5k
aWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisK
K1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVh
dGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2Vn
bWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAgIFtdKGNv
bnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdMSUIp
CisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEo
ZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAg
ICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAgICAgIFtd
KGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAor
ICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQo
dmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6Y29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9CisK
K3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTM4LDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2Vn
bWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92
ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAt
IHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyNiArNTUyLDE2IEBAIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmll
dyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
c2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBk
YXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkg
eyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUg
YSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25z
dCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU4Nyw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
fQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVy
LmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgz
OTM2OGFkLi43ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxMzggQEAgY2xh
c3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRC
dWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11
dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8g
VG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50
LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNl
Z21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
ID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcg
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9V
TkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChO
U0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUo
R1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNh
dXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQg
aWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNp
bmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNh
bGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9u
IGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNv
bnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29w
eWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUg
U2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0
RGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJy
YXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQK
LSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50
byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAg
ICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQot
ICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlv
bjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6
ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZv
aWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2
b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQg
c2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVy
IG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRl
IGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5k
aWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3Qg
UHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0K
LQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAg
ICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWlu
UHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAj
aWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAg
ICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
RGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAg
ICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0
YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hh
cmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4gewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsK
KyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRh
UmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRl
cz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
Qnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAg
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVy
PiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0g
ICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5k
IGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJh
eUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVm
ZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorICAg
IGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYK
KyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsK
KyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYp
IGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRh
dGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMDIsMTAy
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
IHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8g
Q29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQg
dmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFr
ZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9y
UG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZl
Y3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wg
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRl
cm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNj
ZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVf
djxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZm
ZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2FuJ3Qg
Y2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgIC8v
IFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikgPSBk
ZWxldGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7
CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBp
bmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENG
KQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0
cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKIGlubGluZSBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJl
ZigpKQpAQCAtMjY2LDIzICszMDUsMjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7
Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdt
ZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3Jl
YXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZl
MmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2
b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVu
dFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdv
cmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
RGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5m
by5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93
UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhk
MDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0Yzdj
OTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6
ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsK
ICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEy
NmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBm
aW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5
MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsMTcgKzQxLDEz
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcg
Rm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRp
b24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9u
LUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
Jm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJl
dHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdt
ZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgp
KSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0
YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4
ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFk
YjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERh
dGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAq
cG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlw
ZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBu
Z0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0
YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkw
NTdiYmYzNjRhYmYxODM4YTliODUwLi45ODA1NDdiOGNjNGM0YTg4Y2ExNTVjYmIxNzgyMGFmODVl
MmRjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0
YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2Vy
KXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9z
aXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7Cisg
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAg
TlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcg
KzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRp
b24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihO
U1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTUsMjcgKzk1LDI2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwog
fQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAK
LVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QK
K1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0
YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3Nl
Z21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxw
dHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAg
ICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKQEAgLTEyNiw3ICsxMjUsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitS
ZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0
aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
Y3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2NzI2
Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
UGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2Jq
ZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3
Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4MzIw
MGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4IEBA
IHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBp
bml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0
YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAg
dW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDggQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQog
ICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFp
bmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJy
YXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJs
IGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFs
dWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVz
aFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lk
cyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0
LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0MDJl
ZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3
M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtl
eWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5k
QXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZp
bmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCks
IG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLjU4
MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVu
Y29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVy
cmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4uZTZk
NzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3Rh
Y2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJH
bGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFu
dEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxk
ZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5
dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgp
LCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEu
Z2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBjZTI1
OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQx
NDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJH
bGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThj
MTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNhN2Vl
NzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJl
ZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8
U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDRlOTQ5
ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAuLjEyNTg2MmU3MmE5ZjlkODY5NmNl
MTZjYWNmZjZiZjcyMDdiNDVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0
aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9CiAK
LVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEs
IEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQog
ewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGlu
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzQ0MjAwNGYw
MGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRjZC4uNGM1YzhhMzk2MzNhMDY0Nzg5OGI1MmEz
OTQ1MjVmYjFhZmIxMmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBWaXNpYmlsaXR5IDog
Ym9vbCB7IFZpc2libGUsIEludmlzaWJsZSB9OwogICAgIGVudW0gY2xhc3MgT3JpZW50YXRpb25G
YWxsYmFjayA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiA9IE9yaWdpbjo6
TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sIFZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFj
azo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0
ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVk
LCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSku
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAK
ICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4p
CiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFj
OWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJl
MGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZN
b3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2
MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywg
VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2Rl
bD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0
YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7
CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBA
IC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgq
bWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAK
aW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2Yz
ZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBA
QCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8g
IndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0
YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBv
ZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQg
PCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMy
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2
YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0
dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0
eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVk
QnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6
ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcg
KzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAg
ICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsK
KyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
Y29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgK
aW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2Fm
ZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBh
IFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZp
bGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9y
IGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNl
IHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9v
bCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYg
c2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdv
ZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMg
YSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9y
dCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8v
IHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1Nm
bnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRv
U2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3
YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQt
ZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6
ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZh
bHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJm
ZjQwNzNlOTUzLi42MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThkMWY4MTBiZTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8
SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVu
dHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJp
bmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKIH0KQEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYg
KGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkp
Ci0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlm
aWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQog
ICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgp
KSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNP
TlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyop
cHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmls
XTsKICAgICB9CiAjZW5kaWYKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBp
cmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5n
ZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlm
aWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwor
ICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNw
b25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5k
IGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2Fs
bGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tT
ZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
Y2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9u
UmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CkBAIC0xMTUzLDcgKzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgdXNp
bmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewpAQCAt
MTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1
dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5
SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1
ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5
SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAg
ICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxv
YWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTIs
NyArMTIxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIGZvciAoYXV0byBy
ZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAg
ICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAgICAgICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkp
OwotICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2lu
Z1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUx
YzlhMTBjYzE0ZjRiZi4uYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0z
MDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0Myw3
ICs2NDMsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAKIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29t
cGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNl
aXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRh
UmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMWE0M2M3ZGVkMjc2ZTJjM2U1ZjZmNDNhMzhmMDUx
MTI3MjA2ZDBhMy4uYWJkODFlNWYzYzFlYTUwZTQyMmUyZmEzYzJiYTFkMThjZmUzMWFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjph
cHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBz
aGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJT
dGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAg
ICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFW
U3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uMzJjNWE2NjhhMTZh
ZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjE0LDkgKzIxNCw4IEBAIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsK
ICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKIH0K
IApAQCAtMjI4LDcgKzIyNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNyw3IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVj
b2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZp
bmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9i
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0
NTdhODFkM2VlODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uNDZiMDdmZTcxMmU3OWU2MTMx
N2MwZDExNmZlNmEzZjA0YWY5ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBG
b250UGxhdGZvcm1EYXRhOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxj
YWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li4yMDM1Yzk5
YTdmNjhiNTQ4OWM4NThhM2U2ZDcwMzNkMTM1ZDFmN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJlY3Rl
ZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQq
IGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNv
ZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwor
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkg
PSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU3MCwxNSArNTcwLDE2IEBA
IHZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJl
ZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVm
ZmVyJ3Mga25vd2xlZGdlLgogICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRv
IHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0
aGF0IEltYWdlSU8gaXMKICAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZWxzZQogICAgIC8v
IENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBk
YXRhLnJlZigpOworICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CiAgICAgLy8gV2UgdXNlIHRoZSBH
ZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVy
IG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkg
dG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0
IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5
dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHBy
b3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRp
b24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRh
dGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxs
YmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4
NDIxMjRlNmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1
bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlk
ZXIuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIx
ZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3
ODZiOTRiZGQ1MDk0MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAg
LTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9m
b250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVk
ODJiN2I0YTQ5ZjExZTRjOGZkNmM3ZDZiLi42MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5
OWZmOGM1YmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcg
KzM2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lk
KiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAg
ICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29u
KTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYz
OTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAg
KzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RG
b3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVj
ayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0Yo
Q1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRp
b25zKSkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2
YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uY2NkYWRiMGRhMTFiNTk4NWEz
NDM4NjE5ZGIwZGYyMzMwMWE3MjVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGli
cmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEy
YTJmZTA2NDU4MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYw
MWQ1YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBA
IC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hh
cm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwg
ZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRG
YWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2Ug
PSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNp
emUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFC
TEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggY2RlZDRh
NjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMy4uYjc0OWZjMTU4ZGZhYmVmZDNiZDhj
NDU0OThiYTBhNWIyOTNiZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQy
NCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0
b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJv
b2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaAppbmRleCBkODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4
NDY4Li4yYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEludFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFq
b3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZm
ZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1
MDY5Li4yOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDI4LDggKzQyOCw5IEBAIEVuY29k
ZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVk
RGF0YVN0YXR1cygpIGNvbnN0CiAKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5j
b2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsK
LSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIi
LCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7Cisg
ICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwg
W3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6
ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJ
bm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1faW5uZXJE
ZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNiYjQ5ZDE3MzYy
ZjcxMmQyNWRmZTgyNGRmYzFjMzgxYTVkYTAyOTMuLjNhMjAxNTc4MDE0ODgxMGFjZTU0ZGY3YjA4
ZTRkZjdmZDUyMzdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0
RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJU
eXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6
ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBh
eWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAg
d2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0
YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2Mw
MWI5YzMuLmNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJE
YXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7
CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4
dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIq
KiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4
dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewog
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29k
ZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAg
ICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBz
c2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAg
c3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdw
b2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFy
dEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdo
LCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBh
eWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uN2JiMjc0
M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAg
IEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
cGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5
bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAgICAsIG1f
cGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsKICAgICB9
CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEvU291cmNl
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
NDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3YTNmYmQ0
ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwog
fQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0g
bWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAg
aWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNl
bmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykK
LXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFi
NDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRl
OGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uNWFkMWY2ZmFj
NGI2NTQ3NTFkNTkxZDM2MzVjNDY4NTAzOWQ1NzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzks
MTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
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
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilp
bmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBp
ZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRl
eDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVi
b2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4
Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLmZkNTdkMjIyYzJkNzQzMDE2MTE2
MmMwZTJiODhlOWYxY2MzMTk5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBl
cihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVy
IHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3Rl
Ym9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwog
ICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlw
ZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAg
ICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmls
XSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpp
bmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0
MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0
ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFz
dGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3
ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5
cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBl
c1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7
CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4p
OwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFk
eVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwor
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLjFiOTE5MTRl
M2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4
LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBl
c10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtk
YXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJk
VHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJv
YXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsK
LSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAg
ICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJp
bmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAg
ICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
KQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAg
ICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0
Niw3ICszNDYsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJgogICAgIGlmICghY2FuV3JpdGVQ
YXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Qk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMg
U3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2Fy
ZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4
KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7
CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTA1LDcgKzUwNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQ
YXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3Rv
bURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXRE
YXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkg
ewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YS4uNjIzNjRkNzEzYzk1
YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZv
cm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRl
czsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNC
bG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3Li4xMDgyODEx
MzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRh
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0o
Ym9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2
Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhh
bmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcw
ZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1Yjcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAg
ICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAg
IGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBh
OTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdlMzhhYTA2MTJkOTI3Yzgy
NTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC05MTksNyAr
OTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5z
ZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2Vs
ZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZC
eXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilz
dHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgz
ZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2
ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICBy
ZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5n
LgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEz
Nyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAg
ICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFy
ZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVz
aCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1
ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwog
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIzNCwxMyArMjM0LDEz
IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogCiAgICAgICAg
IGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAm
JiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBEaWQgbm90IGZp
bmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRj
aCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gp
KTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1h
dGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVy
ZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBw
dXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3Vu
ZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFy
eVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9i
b3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5
Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxl
SGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9z
ZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRl
eCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMy
MWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQog
ICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVC
dWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVy
LT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLjNjYTIwODIy
YzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxl
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRl
c1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCAyYjMxMjg1ODcwMzAzZDA5YjAyNDUzNjVkNjFhYjg5MTExMWRhYWI1Li5hYWNjMzdjZDI4
NzI4MGYxYmUwMDg3OTczNTFhOThiZjhiYzFiZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05NzgsOCArOTc4LDggQEAgc3RhdGljIEhH
TE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAg
IENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2Jh
bFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAg
ICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBG
QUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1
Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAg
ICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAg
ICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0
ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0
MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVk
NzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVm
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
cnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1
MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBib29sIE1v
Y2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYg
KCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
KQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAo
IWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcp
OworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRh
KCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJh
eS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZv
aWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJp
bmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZp
Y2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsK
IAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdW
aWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCks
IHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVz
cG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250
YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2
Li5lOGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03OCwxMSAr
NzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0g
ICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAgICAgaWYg
KG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
KQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5
KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOwor
ICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGln
dW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAgICAgICAg
ICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
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
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0
MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1s
RG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9i
YWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxv
YWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAg
ICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNh
ZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQz
ZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9p
ZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2Ny
aXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRl
eCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lYmRlNzUzMGVjODZm
ZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsx
MDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwg
ZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRh
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYg
ZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBk
YXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRh
ID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZl
cmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2
OWM1NGIwOWQ3Mi4uNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVm
ZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEu
cmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRN
ZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIy
YzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdj
YmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2so
V1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9i
b2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uNWM0Yzhl
NzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47
CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2lu
ZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRG
b3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1
NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEy
ZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwK
ICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1f
c2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOwor
ICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5
ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRk
MjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3
IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9u
JiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0
Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+
JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0g
ICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07
CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyAr
NjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFn
ZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9u
c2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEo
KSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBz
dG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZm
ZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBA
IC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdl
UmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAg
ICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAg
aWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9
OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5
LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgxODMwZTM5
NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhj
MDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29k
ZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkp
OwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+
ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwog
ICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19m
cm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uMjlmNzFk
N2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDI1
OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJi
MmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBw
dWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHko
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdh
M2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCArNDgsMTAg
QEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRh
U2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRh
dGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29u
c3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRj
ZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVu
Y29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0
YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNv
bnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3
OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRh
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJB
cmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFz
ZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFm
ZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+Ojpk
ZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNl
Y3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUg
dXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURh
dGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZv
bnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1J
bkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4uNDU0MTY0
MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBs
aXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3
MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4ZjlhMTM3OWMy
Yzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5k
YXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxm
LT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291
cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBkYTFl
ZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3NTUxNGMx
MTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhh
bmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVm
PFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4
MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1
MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hh
cmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJl
ZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEs
NyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhl
ZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0
aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsK
ICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0
KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYx
LDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVz
QW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNp
emUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRh
U2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0
YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1Niw3ICsz
NTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVw
ZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlT
aXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJC
b2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVm
ZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkg
fX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBl
KSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRl
Y29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNl
SGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDEx
MWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmlj
YXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3Mg
Q3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEz
MDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2
MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8
U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5z
ZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0
aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsK
ICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcx
NDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5
ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6
Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSog
Y3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52
YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAg
ICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBi
MzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAx
YjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2Yw
OTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0
YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9C
SkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3Np
bmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAg
ICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJ
bWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMzZhNmY0
ZmIwN2YwYWI5ZGRjN2E0NjE4ZmVkNDIyZWMzODk3NDAzNS4uMmY0NDhhNzYzOTI3ZTAyZWNjMTU5
NzU2MDJjOTAxYjcxOWExYTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAg
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEm
IGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0K
LXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQor
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1
bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRl
MTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29u
c3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsK
IApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAo
IXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7
CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhNzJk
MGQyYzkyZDdkZWQ0NWUwZTQxMGI0MWRjYjhmYjRkYTVhZTg1Li4zZmJkZjE0NzFlZmY5YTUzNmRj
OTkzM2FhNDRhMDk2Yjk0ZWQyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3Jl
QXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAg
IGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVl
KCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBh
bGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBh
ZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGln
aHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0
OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0
T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9y
ZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05l
d0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJD
b3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpAQCAtMjIyMSw3ICsy
MjIxLDcgQEAgLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGEKIHsKICAgICBfcGFnZS0+cmVxdWVzdFJl
c291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5p
bCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIy
MjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRk
ZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdl
dDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRh
dGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3Rv
bURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxl
bmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25E
YXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRp
Y19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5z
ZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi43MjViNzcw
ZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcgKzEyMzIsNyBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
KSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2
ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJkNTcwMmI5YzdkZGNk
NmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAg
ICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlvbnMoJnJl
Z2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11dGFibGUg
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7
IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25E
YXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJh
dGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRi
NjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdm
Nzk3YjRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAg
ICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lT
dHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmlu
ZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFn
ZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmls
ZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVy
bCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewot
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJp
bmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCld
ICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAg
ICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAg
IFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0g
ICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9
IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5T
RmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RX
aXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1
cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2Fy
ZCBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikg
ewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQ
YXN0ZWJvYXJkTmFtZUdlbmVyYWwpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQw
OTI4Li41NTE2NjY2YzVhMzExNzJjOTg2ZTMyYWJmM2M2YjAxZDQ1NmYzNmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXND
aGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENo
YW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vz
c2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggOWE4MTZmZGIzMTgzYTE5YjY3OWU4NzcwM2EwZjQ0MGU1YWI5MDkw
My4uNzIzY2ZlNWI3Mjc2MTVmNmVkMThiNWYyNWQxZTgwZGI3MzMxZjk2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExODEsNyArMTE4MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdp
bmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLmY5NGRlOTMzZmQw
Y2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhj
ZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAgICAgICAgZGF0YSA9
IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXpl
KCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXgg
NTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4uZTlkMjM2OTNjZGM5YTcw
ZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnBy
ZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyZDFmODljMDU4
YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBl
ZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
Ojpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmlu
Zm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEu
Z2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3NWNiNzUxMmNjYTY3
NDc0YTU1NDI0YWQzYTI4Y2Y2YzdlZTBhY2Q1Li40Yzg2MjczYzNmYWNhYTBhNjQyZTlmNzVjNGQ2
YmRmNDFhNTNhMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJP
T0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQp
c2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFz
dGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0Rh
dGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9y
aWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NjI1LDcg
KzY2MjUsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdp
bihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5n
dGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5n
ZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBO
TzsKIApAQCAtNzU5Niw3ICs3NTk2LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDoo
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAg
ICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmlu
ZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0
cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhl
IGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIp
XTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBz
aGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAg
W3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJl
Y3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2Yy4uYmE5
OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAg
U3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYWY3ZTA3OWFlNDFmN2FkZTNmYzhjYWY1ZDg4MWYy
Y2ExYmEyMzc0Li4xYjNmZTg2ODlmMTc5NTc1MDY2NzMwNDFiMWU2ZDFiNzM2NmQxMzlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTIy
Nyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUzNzk0ZWVl
MjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5
ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJv
cGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RG
OjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVh
Yjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRh
YmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0K
QEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dl
YlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAg
W21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3Rl
Ym9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUu
Z2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9s
bGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShy
YW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5
VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0g
ICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFC
eVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1
NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMx
ODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAg
ICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEko
Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9
CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVz
LmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRh
QXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkp
OworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmRE
YXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYw
YzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4
MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQ
YWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1l
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
OworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQo
V2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBX
ZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRl
c3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1
ZTgwYTQ3YzE3MWUzNDE0NjhjLi5hMzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQzZmNlYjQy
YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQg
cmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsK
ICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdl
JiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpA
QCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAgICAgUmVmUHRyPEFQ
STo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1
ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVm
ZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRh
dGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGln
dW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVy
LnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJ
KCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlw
ZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFi
bGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5k
ZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIy
NTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3Vy
Y2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291
cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBt
b2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBt
X2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5
NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2ZTJlN2I1N2U1MjMx
OGY0MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAg
LTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVS
ZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhh
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
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0
ZDQ4ZS4uMTUyMDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bh
c3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCBy
YW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uOTE0NmU0
YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFs
OwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1
MTIwYjZiLi45NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEg
PyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRh
UmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi42ZjNmNTY2
YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92
ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0
ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0
ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAg
IC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3Rl
Ym9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBA
IC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAg
ICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwg
cGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFi
NzMyMTRmYjAuLjNmZjM1NTgwOGUxZDZlYjJhZTMyYjU3YjdlYmY3ZTM1YWNmZjRlOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
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
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjBmODRhNDVjMzgw
MzVmMmRjZTkyNWNiZWUyYzMxOTkyZTY0MDMyZi4uM2NiNTA2MjRiZjBkN2E4MTEwMmY3Yzg1NDRi
MzQxZGI5NjYyN2JkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
Q29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2
NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgw
YmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0
YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJ
bWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAq
KW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2
MTZjMzJmZDYyNjc2NDcuLmJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0
ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
YzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkw
YjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcg
KzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVk
IFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjkxNDE5NmM0
YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
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
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJk
NjZiZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4xMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBi
N2U4MDg2MTdhZjg1NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQog
ewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZv
clR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5
YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLmM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVk
N2M3ZmE2YjdkYWE2Y2MzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCAtIChOU0RhdGEgKilkYXRh
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRv
UHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICgh
bWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJl
c291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFp
blJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlk
NDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNo
aXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rp
c3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIg
KnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRl
cl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRh
ID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVE
YXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
RGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNl
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi41
YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRU
ZXN0UmVzdWx0LmltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07Cisg
ICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYg
KCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYjA4YzFkMjFjZjlm
MDRlNjExYjU5NWVkZTNjYjY1YTE3YzQ5OTc5ZS4uZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0
OWEzMzkxNDhhMzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0Nv
ZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1p
bWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNl
KSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgp
OworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1l
VHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNv
dXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFt
ZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJl
c3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpX
ZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgp
IGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1
cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFt
ZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFf
cHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJM
CkBAIC0zNjgsNyArMzY4LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAg
ZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAogICAgIFNoYXJl
ZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29k
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRh
KCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgcmV0
dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0
YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURh
dGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMw
NGM2ZjA0YjYxOWUuLjVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1N
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0o
KQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNP
TVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAyYmE3ZGE5MGE1YzYyMTI5MDA4
ZGY2MTI5NzMwYWNkYjliZDQ1M2JhLi4wNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIx
YzE0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyAr
MzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlT
dHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2
b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiog
cHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAg
ICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCmluZGV4IDAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTku
LmM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJB
cmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAo
IWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3
ZWVmYzEuLmU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
CiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUx
ZTY5ZWUzZjEuLjJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
IAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7
IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2
MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBl
YTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAt
MTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9v
cHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJu
IEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJl
dHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxU
IFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3Vt
ZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
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
YjkxMDVlMjkuLmMyMDNiMTExYjRhODljYTI0ZGZkNzI3Y2NhZWExZThhZGQ3MDdmMDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRp
Z3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMz
ODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4g
YW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3Zl
IFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BB
TC90ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0Njgu
LmJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00Mywz
OCArNDMsNDAgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVm
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
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFy
KCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4NSwxMyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNC
dWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91
c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAg
RVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDcgKzk5LDcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVz
dERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEs
IHN0cmxlbih0ZXN0RGF0YTEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIs
IHN0cmxlbih0ZXN0RGF0YTIpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwpAQCAtMTExLDcgKzExNCw3
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2Vn
bWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
MCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7
CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKQEAgLTE1MSwxNSArMTU0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMg
dXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVj
dHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNz
ZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0
ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNl
Z21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgogICAgIEFTU0VSVF9FUShsZW5n
dGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKKyAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVm
ZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUs
MzAgKzE3OCwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAn
YicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywg
J2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAg
ICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMx
KSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8g
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1
ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBh
dXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgp
LCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVj
a0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5k
YXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwg
a2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+
c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwg
Z2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdo
Mi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsK
KyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0
cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAg
LTIxMCwxNSArMjE2LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAg
ICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZl
cjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAn
YicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0p
LmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5n
ZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3
MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpA
QCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJy
YXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446812</attachid>
            <date>2021-12-10 14:19:51 -0800</date>
            <delta_ts>2021-12-11 03:58:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211211091949.patch</filename>
            <type>text/plain</type>
            <size>420831</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZmZTgyNDZjMzM4MzEw
NzhiMGJkMmMzNWU2NGE0NDRiMzY1YjQwNC4uNjc5YWM5MTZkYzBmNzIwYWJlYmI3Njg1NmQ4ZDZi
NDRhNDZiYjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFeHRlbmQgdGhlIHNjb3BlIHdoZXJlIHRoZSBXaW5kb3cncyBjdXJyZW50IGV2ZW50
IGlzIHNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzNTM1YzVkOTVmNzViNzQ2NTg0ODNjYmM2ZWQzYmE4NDY5OTJl
ZjIyLi43ODk3MDM4YWRmOGNmZGEwNjhjNmUxZWNkMzI0OWNlYzY0MDFhZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAg
cmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3Qp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVk
QnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAg
ICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJj
ZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAg
KElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmRE
YXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlv
bkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
OgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVB
cHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3Ondp
dGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdp
bik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVF
bGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
U3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgogCiAgICAgICAgIEFsbG93IGBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyYCB0byByZWFk
IGZyb20gdGhlIHBhc3RlYm9hcmQgYXMgYSB3aG9sZSBpbnN0ZWFkIG9mIGEgc3BlY2lmaWMgaXRl
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDMyOWIyOTM0YjY1N2U0NTEyMDQwZDUz
YzQ0ZTU5MDczZTNhMzg4ODguLjJhMDBmOWM2Y2M3ZjQyMDY1NzA3MmQyZTgyMjhmMGZkMmYxZWU3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0x
MS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAg
ICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmlu
Z1ZhbHVlXSk6CisKIDIwMjEtMTItMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIEFsbG93IGBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyYCB0byByZWFkIGZyb20g
dGhlIHBhc3RlYm9hcmQgYXMgYSB3aG9sZSBpbnN0ZWFkIG9mIGEgc3BlY2lmaWMgaXRlbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDc5NDdlYmEyMmEyNTdjOWJkODRhOWZiNjZjMWEy
NDg2NmM5YjIxYjYuLjNhMTkxNjYzMTc3MjBmNzIzZWI0ZDYwY2Y1ZTZkYmIyODM0NmQ2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMS0yNSAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNo
IGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFy
YW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICog
V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNl
Lmg6CisKIDIwMjEtMTItMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhIGBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5YCB0byBjb250cm9sIHdoaWNoIHBh
c3RlYm9hcmQgdGhlIFdlYlByb2Nlc3MgaXMgZ3JhbnRlZCBhY2Nlc3MgdG8gd2hlbiBwYXN0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4
IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLjJiMTYwYTA3ODA0YTEz
Mjc4ZDZkYjFmZjgzYzgwODIxZDkwYmQ4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRp
emVEYXRhSWZOZWUKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9k
YXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0
aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6
Z2V0PFN0cmluZz4obV9kYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjU4
Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0g
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVz
dWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5
cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRl
eCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi5mNDEwYWFiMTUxN2Uz
OTA4OTI2ZThlZjVlOTI4ZjNjOGM4NDM2MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5
cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAg
ICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwg
Y29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlv
biA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJ
bWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVw
cmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6
QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3
OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAg
ICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNp
emUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0
MjRjLi42ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICszMDEsMTMgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
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
cmVzdWx0KSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAg
ICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAg
ICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAg
dGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0
ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYz
NTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAg
IHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVm
PEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRi
NDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlh
OGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNv
bGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgp
OwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNl
Qm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
YXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNh
Y2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkK
IHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNv
cHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBS
ZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEy
YTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQx
MjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNl
cHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVl
cnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5
SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25z
ZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JF
X0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQx
YTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3Qg
U2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDog
a2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
ICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZm
YjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5z
aXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6
aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpv
cHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0
cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2
NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQw
NWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBm
b3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3Vt
ZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCks
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNp
emUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtl
IHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkK
ICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwog
ICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBG
b3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCAr
Mjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRC
b2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVu
Y29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5n
KCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2Rh
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
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4
NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3OGFlODc1ZGMy
NTYzZWJjYjJhNzg4ODVkMzBiYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
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
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNl
OTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4
ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlm
ZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4
NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
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
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
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJh
OWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMs
MTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0
RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250
ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRlNDczMTg3OTViYWJhZjg1MmMyMzYyYjM5
OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYyNjIzYzM3ZWNiYTdjMWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBT
dHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0
KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCks
IHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpi
YXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1
bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQy
ODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdmODE2N2EzMmJlMjM3MzcxYmEgMTAw
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
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0
Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAxOGQ5MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwNSwx
MSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQog
ICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJj
aGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hp
dmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291
cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEo
KS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJj
ZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBj
b21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgp
LnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1h
aW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpA
QCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVz
b3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwog
fQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNv
bnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2
ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwog
fQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBs
YWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNv
dXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDUxMjI3Yjk2ZDdkMTdjYTA3ZWUz
YjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZiZDMyZmMyZWNmNDZhZjdjZDkzNzlhOWQwMGM5OTExNmVi
N2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdS
ZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRl
cjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmll
bGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMzUsNyArMjM2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JT
dWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVz
b3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjEyLDcg
KzYxMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FS
Q0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5ZmMwYTUzM2RkYjQ3OTNhNGIuLjA3NmYzN2RlMzI1OWEw
M2MzODdhMWUwZDJhZmNhZWQyZDgyNTliMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAog
ICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90
IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGZlMzJkOTRlNDI4NjU5ZDVkNjFkYWJhNzIxOThlYjE5
NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTliZDQ3YTdjYmJkOGM4MzE3MzRjNGJiMTAzNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmlu
YWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZjNWVlM2E5YjMxYWU4Yjg0ZGI5MjBi
NjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThhOWViOGRhM2NlNmI0NGZhZDJiYzNlYjU1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9u
c2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5l
d1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdS
ZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRp
b24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0
aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZjYWUwMjBlMmYzYWMuLjljM2Y3NGM0
MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
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
ODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRh
YWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzM0
LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMu
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBh
eWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRh
IHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAgICBpZiAo
YnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpAQCAtNTcx
LDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
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
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA0ZjIyOGU4ZDAzODli
OGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1YmQyLi44NGFhNzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQy
OWNmYjhkNTdlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
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
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZiOTE3NGZm
NjgyMDAwMTE0YTcyYTNlMmEwMTBlNzgxMDg4Li5kZmJhNzYxY2IwNTg2NGY1NDI0NTIzYmEzN2Nk
NTVjNjAwNWRlZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxs
YmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBu
ZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAg
ICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
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
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDU0
ZTY3NmNlNTBiMDk2YjU2MDdjM2MwMzBmN2Q5YWNjMDVjNGZhODguLmI4YjMwYjdlMDgyY2NjMThl
YzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
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
L0VkaXRvckNsaWVudC5oCmluZGV4IDE4MTc1MzFjYjY5OGI4YTRlZGEyODEwY2M0NjZjODE2OWNi
MTYzZWIuLmNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgOiB1aW50OF90OwogZW51bSBj
bGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRnJhbWU7CkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFj
ZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMmNkMTlh
MTEwYjJiODY5MjNmNDYzMTI5OWRhMzU1MDYzYzhiYjUxMS4uOWM5MDBiZThmNGM1MjExNDc1NjYz
MDE5MTFiYjkzYjBjZTM3YTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTU1LDcgKzE5NTUs
NyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBh
bmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxs
eSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVu
IERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50
IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBk
YXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
dXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4
IDE2NWFhODA1OGEwMzkwYjQ1MTU3OWExNDc2MWJkODY3OTQ5MzY0MzMuLjAxZTE2ZGQ5OGY0ZGYw
Y2ViMjFkZjkwOGQxZjQwYzYyNGFhZTRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmlu
ZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9y
ZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9y
IChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJp
YWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQs
IGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBj
aGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4K
ICAgICAgICAgUEFMOjpUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRl
bnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkp
OwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBB
TDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQo
dXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6
YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGlt
YWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRh
dGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRm
ZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRl
MjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwog
ICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07
CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4
ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAK
IHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZp
bGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4Nzli
ZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkx
M2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRh
UmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRh
UmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJl
RGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4
XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBm
aWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+
ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2Zp
bGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0
aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVu
ZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5Yzhj
NjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0g
MDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2Rl
RW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAxNDc2NDFkZGI2NTg4NWUzOWE4M2M2YTQ1NTU2YjFlYWE2YjM2NWY3Li5j
NGM1NTc5OTgxOTg2ZDZhM2MzMDMyNWU2Y2I3OGMyNGMwMzcxOTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRf
XyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3Mg
RWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQg
ewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmlu
ZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3Ry
aW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsK
LSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIw
LDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0
ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owog
ICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikK
ICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmlu
ZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTM0MCw3ICsz
NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0Zv
ckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5n
JiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0
IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNr
KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
aW5kZXggOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MC4uNmRjZWNiNmM5
ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBW
ZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0
aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRh
KCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNp
c3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJl
dHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFk
MjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYmZhZmMzZWM2MDc2MDU1YWMxODc4
NTRjY2Q4ODc3YzhjNWZiZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQog
ICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3Jp
Z2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1
c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBlNzc5ZGFlYWU2NTk1MzQxOGQ5MGMxNzUwMTJk
NThmYjk2OGE1MDBjLi41YmZlYWUyYTI4ODQ4OTQyZTY2ZDkzOGQ0ZTExOWY3OTc4MTg3YTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEs
NiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcg
QEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdi
Yzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9h
cmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAg
ICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5I
VE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQxYTY4Y2M1YWY5MjJlODgy
ZWMyNjhlZGIyZTk5MDVmNDNjMjQ0Li4zMjg0MTAyZTBjNjNiNjU1MjFkYjEzZjU1ZjE4ZWY4ZjFi
NzdiZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJk
SXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsK
IHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxh
dGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpO
byk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0
ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmlu
ZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmlu
ZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBh
NjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2Vk
QXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsK
KyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQz
OTAwMzUzNTM4NWQuLmVhYzg0MTgzY2EzZDlhNDY0ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwog
fQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRl
cikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmls
ZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3Zp
ZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFN
RVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBt
X3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRp
ZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17
Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsK
LSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5n
U3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0g
ICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxl
UGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29t
YmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBz
ZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0
YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
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
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CkBAIC0yMDIsMTAg
KzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNl
Z21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAg
ICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5z
ZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAg
IGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7
CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9u
ZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9u
ZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYg
YXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CkBAIC0zNTMs
MTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNo
YXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2lu
KCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBB
U1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0g
ICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEo
KTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+
JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQ
dHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9
LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0
YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRl
ciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsg
fQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRh
KTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0Uo
Q0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
ewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3Bl
cmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlz
ID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK0Nv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQoreworICAgIG1f
Y29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXpl
ID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShz
ZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29u
dGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2Vn
bWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29u
dGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZl
ci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVN
YXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9k
ZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmls
ZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgp
OworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiB7IHsgZGF0YSgpLCBzaXplKCkgfSB9Owor
fQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCisjaWYgVVNFKENGKQorUmVm
PERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYg
ZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHTElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRh
U2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0
YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNFKENGKQorICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgICAg
ICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRpZgorICAgICAgICBbXShjb25zdCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAg
W10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBw
cm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVk
RmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOworfQorCitzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6
ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUzOCw3IEBAIHNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVu
dCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQp
CiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlv
bldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU1MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVy
LCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQg
PSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNl
Z21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRh
dGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUo
KV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJu
IHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVy
IGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1ODcsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAg
IGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkp
KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4u
N2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZlOTk4OTdiODNjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NiArNjIsMTM4IEBAIGNsYXNzIERlY29k
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
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVy
IGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBh
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lk
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
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
ZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5k
IGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CiAK
LSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKK2NsYXNzIFNoYXJlZEJ1ZmZl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
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
Q29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsK
LSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVu
dDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewog
ICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NSArMjAyLDEwMiBAQCBwdWJs
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
dWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2YXRlOgogICAgIC8vIENvbWJpbmVz
IGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBh
ZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtl
RGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7
CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9u
KHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9z
ZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJsZSBib29sIG1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMg
Y29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNp
emVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywg
UmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgeW91IGNhbid0IGNhbGwgYXBw
ZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAvLyBXaGVuIGNh
bGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4pID0gZGVsZXRlOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBk
ZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsK
KyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVz
PiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVf
RVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVm
PERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKQEAg
LTI2NiwyMyArMzA1LDI0IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpl
eHRyYWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNp
emVfdCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1Np
emUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEy
Yzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5
aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdl
dCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93
UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5z
QXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYz
MjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2OTVj
Y2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5
KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0
X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZl
Li5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjY4YjA4
OTRjYzg1NmVmNTIyNzAzNDM3MDI5YjI2YzViM2RkNTkyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQxLDE3ICs0MSwxMyBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5kYXRp
b24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRo
aXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3VuZGF0
aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRh
dGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJl
dHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQog
I2VuZGlmCiAKQEAgLTcyLDcgKzY4LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFS
ZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBt
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
MWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNl
bmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBy
ZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVk
IGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKICAgICAgICAg
cmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAg
YXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcgKzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhl
IGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtl
eSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGlu
ZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAg
IGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZN
b3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09O
U3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNj
YTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2Mw
YmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29k
ZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5Owog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNv
ZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApp
bmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4
MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRl
cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmlu
ZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNl
ZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAg
dm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92
ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6Zmlu
aXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2Rl
ckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVy
U3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50
PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAg
ICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJp
YW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0
cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkp
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0
cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRm
NzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29k
ZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRj
ZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQw
NjE1ZGM0OWIxMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxNiArMzgsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQ
dHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhk
YXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxT
aGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1
ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsK
ICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTYxLDcgKzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRz
LmdldCgpLCBzaXplKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ZTk0OWRmYWI5NzY1
YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcwLi4xMjU4NjJlNzJhOWY5ZDg2OTZjZTE2Y2FjZmY2
YmY3MjA3YjQ1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cApAQCAtNjMsNyArNjMsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlz
aWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllcikpOwogfQogCi1SZWY8Rm9u
dD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpP
cmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250
U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKIHsKICAgICBi
b29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDc0NDIwMDRmMDBiNWRiYTI3
ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjRjNWM4YTM5NjMzYTA2NDc4OThiNTJhMzk0NTI1ZmIx
YWZiMTJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBW
aXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJhY2sg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJ
bnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6
VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29s
IHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQo
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
ZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5
OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLjMyYzVhNjY4YTE2YWU0OGVlZThj
OWQzOGRiZmYxMzMwNWZkYWMwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNCw5ICsyMTQsOCBAQCB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKIHZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9w
YXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIy
OCw3ICsyMjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsyMzcsNyBAQCBEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRl
Y29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0
KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3Bv
bnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAg
ICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNl
ZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZm
ZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYg
KzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9u
dF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXgg
YTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0
ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJv
bVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90
IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIs
IG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXIt
PnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMy
KQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRh
KGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAg
dXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAg
ICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1h
Z2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIElt
YWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIg
Y2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtu
b3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0
c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFn
ZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBD
R0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0
ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUg
YSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAg
IGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNB
dFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVj
YXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sg
ZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3
aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRl
ciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNh
bGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFy
ZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRh
LnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0
KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7
CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0
KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZl
Li5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURl
Y29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBh
ZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgp
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDlj
ZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRk
NTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1
Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQo
KSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0
OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29u
LCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0
byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAg
ICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3
YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAg
QEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxp
dHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250
KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENv
cHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQot
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAg
ICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1
NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRi
MGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxp
emVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYg
IWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1
ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcg
KzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBj
b25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29k
aW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJf
dCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tl
cihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9G
dEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5U
WVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJi
YWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEw
YTViMjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0
LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29u
c3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0
cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2
MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWlu
dCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAg
ICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQ
dHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjli
M2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0
dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0
byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMs
IGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBk
YXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewog
ICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNv
ZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+
cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVk
ZmU4MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1
MjM3ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAg
ICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQg
JXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0
ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0g
ICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCkt
PnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlz
LT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9h
ZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5j
YWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAg
ICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAog
c3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25z
dCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2lu
dGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQg
bWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXpl
IHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwg
dGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAg
dXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7Cisg
ICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2
b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikK
IAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50
LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3Vw
RXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsK
ICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBh
eWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4
IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFh
ZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0
YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQp
CiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0
cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQo
ZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAgICB7CiAgICAgfQogCkBAIC04
Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
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
ZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNk
YjllZmViNmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIw
LDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0
ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJ
Q0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+
bmV4dCkgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgIGlmIChidWZm
ZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVm
ZmVyOworICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApA
QCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQ
RUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdh
ZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3
MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDlk
YjBhYjM0YjI2MThhMDQwMmIwZDI0M2RjODcwN2EzNjc4MjNkZTMuLjM2NmRiOGNlYmYzNWIwMzNl
YWE3M2M1YTFmZjY3ZGE4YzMxZGRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNv
bnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJv
YXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJv
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+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAg
aWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CkBAIC03NjEs
NyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAogICAgIGlmICghW3Bhc3RlYm9h
cmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmpl
Y3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmlu
ZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjE2ZWRkODQ3NWUxNDg4ZGI5
ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uZTMxYjQyOThhZjFiYzU3ZDE5NTNkZTBkYzE2YWI4NTY4
OTk3NWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9y
JiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVk
RmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVy
bC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdy
YXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAg
LTM3Niw3ICszNzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
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
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYTdmZTcy
NTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4uMjhjNzJiOTJiN2Q1OWNhN2VjMWMx
YzUzYTU5NDIyNjRmODU0ZThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QK
ICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0
TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3Jt
UGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVj
dG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3Rl
Ym9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRh
JiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFz
dGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07
CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7
CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkg
Zm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApA
QCAtMzQ2LDcgKzM0Niw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFjYW5X
cml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBi
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVd
OworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9y
VHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0
YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0
ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoIWlu
ZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTQ1Nyw3ICs0NTcs
NyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtp
dGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhk
YXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0Rh
dGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA4LDcgKzUwOCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0
ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAg
ICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBs
YXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6
OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkw
NmI5NTFlYjg5YS4uNjIzNjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwx
MyArNDEyLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAg
ICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9y
bURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7
CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4
MDU2NTdjYzI5ZDJkODM3Li4xMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBj
bGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAg
ICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAg
ICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAg
ICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJl
YW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMx
MmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIw
YTE0NDQ3OGRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQog
ewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXgg
ZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0
M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAg
ICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9
JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExl
bmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxl
LCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVu
Z3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZj
Li5lNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0g
X3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJv
bmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAg
ICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBz
dHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAg
ICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7
CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1
Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBk
b3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNz
Q29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAg
ICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJv
Y2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAg
ICB9CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJv
Y2Vzc0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0
YXJ0LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAg
ICAgICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1
cCB0byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5k
YXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1v
dmUoMCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdl
J2xsIGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92
ZSgwLCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1
MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAz
MjkyNmI5MzE3NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5k
bGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQog
CiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUz
ZDcxN2UwMTBmLi5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2
b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlk
UmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0g
ICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShj
b250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJj
MzgxZDNkMTk2MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlm
ICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCA3MzY1ZjAxMDk0NGE5MjZiMGViY2E5OTZiZGRh
ZTE0NDk1MGY2M2UzLi5iODI3NTQzNzFiZjcyYzhmZmUwODUxYWNlODEwZTRlNTNkOWExNDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05
NzgsOCArOTc4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVu
dChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlm
IChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29w
eU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEw
MzAsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJM
JiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0
YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9P
TCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkK
LSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRs
ZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYg
KGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmls
ZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUp
OwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApp
bmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRi
ZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhh
bmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUz
LDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAg
ICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAm
Ynl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAg
ICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5
IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRo
LmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2
M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4
NjVkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0y
MTMsMTAgKzIxMywxMSBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2Uu
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRh
dGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVz
cG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJy
YXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsK
IAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNl
Il9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0
aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNl
cnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxl
ZCk7CiB9CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0g
U3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkp
IHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzI5ODg1
NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2Li5lOGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2
ZGQ3YTM3ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCkBAIC03OCwxMSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
KQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJy
ZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkobV9kYXRhKTsKICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBt
X3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICgh
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJl
ZCA9IHRydWU7CisgICAgICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29u
dGlndW91c0RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1f
ZGF0YSA9IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7
CisgICAgICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApp
bmRleCA4YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwLi4wYmNkOTc2ZWRh
OWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENs
aWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8g
Ym9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwg
WyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChz
dGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIz
NTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi4wM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2Ni
Nzg4MDJmYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0
QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBk
aXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFu
eSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2Rl
OjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVy
OjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6Tm8pOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXpl
KSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBi
dWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAz
MzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hh
ciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJv
b2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAm
JiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIuLmRiMjZi
YjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2
NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAg
ICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEw
YWY4MzQyMDcyLi5lYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwog
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2lu
dGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0
YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3Mi4uNTc3ZDY1NmU2N2ZjY2E0NjQwNTBi
ZmQzNGRhZGMyYTM2MjVlMjMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0
aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVy
OwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVm
ZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNw
b25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
aW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkw
MWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykK
LSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNi
MTlkYzUwZTZjYjhmMWViNC4uNWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9u
c2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUz
NDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVm
ZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShi
dWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cAppbmRleCA2ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0
MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2Rl
KGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBE
YXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25z
dCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTog
U3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENh
Y2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVj
b3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVj
b3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVy
biByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFh
Nzk5ZTM2NjJmYzZhZTA1NDkuLmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29y
ZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVy
KGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7
Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBt
X2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVy
ID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBt
X3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
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
NjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OCAxMDA2NDQKLS0tIGEvU291
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
NTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7
CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlm
aWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpv
cHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigp
KTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRC
dWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJi
YjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2Ez
MWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCAr
MTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxl
Y3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
aGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpi
dWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRD
b2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQx
MS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0
Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlm
IChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2Rl
ciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJh
YzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIg
KzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBX
VEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4u
YzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNf
Q0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9z
aW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0g
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKaW5kZXggNjQ0OTFlMTYyZWM2YzViY2ZhM2ZjNGNiMjQ5ZjhkOWNjYjYzOWIy
MS4uMWI5YjU0YjYyNzE4MTQ5NTA4ZjkwMjdjODNjNjczMjA2YmE4Mjk4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
Y3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBk
YXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVh
OWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2Ey
ZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBB
dHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYg
IW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVy
ID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQor
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
biwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdl
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCAwNGNmZDAyOWFjODQ4M2E3YzMyMWJhNTRiMTE4MGM4NmZjNGZk
NzhhLi4zZTkyM2NmNjQ5ZDk2ZTM0ZWQyYTUxZjkxNzBkNWIxNzQxZmE2NTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2MDAsNyAr
MTYwMCw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBI
aWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4
dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRv
cHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0
LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwor
ICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdo
bGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBp
bk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOjpZZXNdOwpAQCAtMjIyMyw3ICsyMjIzLDcgQEAgLSAodm9pZClfc3RhcnRJbWFnZUFuYWx5
c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClfcmVxdWVzdFJlc291cmNlOihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAq
LCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBf
cGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVl
c3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVy
cm9yKSB7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmls
LCBlcnJvci5uc0Vycm9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
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
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2
NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJkNTcwMmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICBpZiAobm9FcnIgIT0gQXVk
aW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFy
ZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9u
cyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJh
dGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9u
cy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEg
fSksIDApOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAg
ICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0Nv
bXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IDg4YzVkZDg5YzE0Zjc5YjVmNTA4Y2UyYTU0NDViN2Y3NTMw
YjRiNWQuLjQ4NDVjNmZhZTQ1YmU3NTRlMzUyNWExMWYyOGQ2ZjcyMWQ5M2E2ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTgzLDcgKzI5
ODMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmpl
Y3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAt
NDQ3Nyw3ICs0NDc3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5k
VVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFz
dGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0
YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDgsNyArNDUw
OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3Rl
Ym9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTYxLDcg
KzQ1NjEsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5n
SW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDYwNyw3ICs0NjA3LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdv
cnkgcGFzdGVBY2MKICAgICBoaWRlRE9NUGFzdGVNZW51V2l0aFJlc3VsdChXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0
YSA9IFtwYXN0ZWJvYXJkRm9yQWNjZXNzQ2F0ZWdvcnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkgZGF0
YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwor
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAg
ICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKHBhc3RlYm9h
cmROYW1lRm9yQWNjZXNzQ2F0ZWdvcnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkpOwogICAgICAgICBj
b21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY0MDAwYTZiNzE5MTM1YzM0M2I0Y2QwOWMwMjNhNjhm
MmM1ZTc4NWUuLmVhZjVlZWE5ODIzY2M0ZjI1OWVhZDNlMDdkMDkwODMxZDlkM2Y5ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMzM1LDEwICszMzUsMTAgQEAgRG93bmxvYWRQcm94eSYgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3QK
ICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFT
dG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGlu
Z1BhZ2UpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXF1ZXN0UmVzb3VyY2UocGFn
ZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5o
dHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIG11dGFibGUgewot
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3Ip
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggODZmMWIzMDQ0ZmM4NzlkMDkzZmVlOTZjZWE2
ZWIxMGE1Mzg3NjYzNC4uNzBiNTdiNTQ0NTM5MjY1M2I0MjZhZDc4OGZiMTEyMjViNzkyYWQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CkBAIC0xMjMsNyArMTI0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURv
d25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94
eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsK
KyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lk
IGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAxOTVjM2M4MjIwODhhNzdiYjlkZjE2
Nzg1MDEwZjQxNTZjNmNjNjYxLi5lZDlkODMzN2Y0NzRmNzc4ZWY3NmIxOTRjNjkyMGExMTg0ZjJh
NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NjksNyArNDY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3Jz
VUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNE
dXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEzYzVkMjkyZWZkZjJiY2U4MDMz
ZDdjOTQwYWI5NWNmYjQ5ZmFkNjQuLjgxM2RiZDE4NjNjYjAwZTQ4OGViOTMzN2Y4YzgzZjZhNzk3
N2NlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM3
Niw3ICs2Mzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXRE
aWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3Vy
Y2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVl
c3RSZXNvdXJjZShpZGVudGlmaWVyKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDI1ZDkxYzkyZjI3NjUxODU2NTljZWZkNGJmOWFiMDdkNmViYzBhYzEu
LjkxOTk1ZDBkOTU2NTVkNTY5MmJkODIxNDY5NjczNGNlNjNjNDI3NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6
ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNz
IFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dElu
ZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CkBAIC0xMTgyLDcgKzExODIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RS
ZXNwb25kZXIoKTsKIApAQCAtMTM3NCw3ICsxMzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFu
ZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25s
b2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9h
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGlu
Z1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUx
ZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNlNDhiYmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcg
KzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAg
ICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9z
eW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IDNiMDRhODMzZGJlMGI2YjY2ZWUxNGQzYzMwMGYzMDY4NzE4
YmYyY2YuLjVjOGUzYjkyZjA4OTkyZWY0ZGFkNjJiMTc3YTgyZjMxNjA4YmJiMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODgs
NyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQppbmRleCBmYWM5ZTdmYjc4YmVlMGY2Mjk0NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi5iNjg0
ZTFjOTRlYWNiNjcyOGJiMTMwNjhjYjY5NTIyNzAxZmE4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0g
aW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVk
UGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggNjJiNTA3YjcyNjg0MzY0MGM3NjQ1ODRmMmYwMGUwNGI2ZmNkN2E0My4uOTg1NTIw
NTM2YmJhY2YyNTVhNzQ3MTMzZDYyMzZlZGUwODA1MDFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0z
ODQyLDcgKzM4NDIsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwp
YWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3Rv
bVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNl
c107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRh
KSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsK
ICAgICAgICAgfQpAQCAtNjY0Myw3ICs2NjQzLDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2Fy
ZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAog
ICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIp
CiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc2MTYsNyArNzYxNiw3IEBAIC0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQg
c2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBz
aGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIs
ICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdp
dGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVO
YW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5S
ZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3
XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkZGZjM2U2OTFmMjlkNzlhMmY5YjNh
YTZiMWMwNTlhZjM3YzAwMGEuLmRlZThkNDYxNjM1NjIwMTQzYmJiMGM1YTBjOTk0YmY0MzAyZmZl
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYmExZjVkN2Iz
N2IxMTkyODExMWFmMDVmOGE2ZDBkYjAwNjU5ODU2OC4uYTQ4NjMyNDFlN2JkZGU0NTI3Y2E0YTY0
NjIxMmUyNjY0MDY5NzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0
OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5
YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQ
YWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxl
UmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4
Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0
KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVy
IHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQp
X3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0
ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9s
bGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIo
V2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5T
U3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJk
VHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVu
ZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAg
ICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODEx
ZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2Fy
ZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50Lmdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51
bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAg
ICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAg
IGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkp
IHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+
Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAg
ICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFj
MTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lk
IGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1U
d29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
OGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uYTM0ZTIxMmQwN2FmMmZm
NTczZTFhOGEzNDBlYzFkM2ZjZWI0MmExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBj
b25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhcios
IGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigp
OworICAgIHN0YXRpY19jYXN0PGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+
ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDggKzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29u
c3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZl
cikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVm
ZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBz
aGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOwor
ICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1
ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2ls
bExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRh
LmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwo
KSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5
NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2Vi
Q29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZk
NDQzMC4uOThhNmUyZTdiNTdlNTIzMThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAg
aWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJl
ZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVz
IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3
ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBw
cm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVz
cG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRl
cmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZl
cihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAg
ICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRmMjc4YTc4ODRiYWM4
OWQ1ZDE1ZjdkYzY0OWQ2NmQ4MDUwNGMxZjQuLmEwMTAzYjAyYTBmNGQ0YTkxZTE3ZjM1MmJmOGY5
ZjEwNTI1ZDhjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7
CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERh
dGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDRjNDg4OTc2MDEyMmFmNzZmMDNiODBjNGY4
NjYyYTEyM2Y0ZDkxN2UuLmUxNmIwY2YzODE4MDYxMTBkYmM2ZTE3ZWI3NWQ5MWQzZTRiMDlhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3Rl
cCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJj
NjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZl
MzI5MWQyMzI5ZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg5
LDcgKzExODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0
ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZi
YjMwYTE0NTRjYTQ5Ny4uNmE5Mjk2M2E3NjdhNjUxNDYzOGJlNmZmNDEzZDFjZjM3NTVhMzIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBA
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBl
czo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgog
ICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlk
ZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsK
KyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92
ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHBy
b2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAt
NDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNI
YW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJ
ZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCAyMDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJhZTBhNjk0ODMxYjkz
NmUwLi4wMWE2MTVlZWViZTYxNjhkZWY3NDBiYjFiNjk3MjBkNzVmMWRkZDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxT
dHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
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
c3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCmluZGV4IDFkZWM5ZTFiMTNiNjg3NmNkM2E2NGExZWEyNzk2NTY5NWU0MDNmYjcuLjcz
YmMyZjU5ZTczODU4MDYyMGUxMjdkOThjZjA1NTRiMzQyMzcwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyAr
NTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9u
KCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0gZnJh
bWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
YnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEu
LjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcg
KzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURh
dGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAg
ICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0
MjAxMDdkYTY1Yjc2YjZkMTJjNGM0NTgxMzlmMzA4MjU4ZDkzZmYzLi5jNjVlOTc4ODhiOTZiNzM3
OTU4ODA1YjZmOGZhMDA5ZGNkMWZiMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3ND
YXRlZ29yeSwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5
MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3
ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxl
bWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCAxZDgxZmZhMTlkOTdmMDRlYzdjYzU3NWIzZWNlNWU4ODgxNDQwYjM5Li41MmJiZjg0
ZTJiMjdkNWJmMmI3MDdlZTgxYzc2Y2M0YTljZWQxMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJl
ck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KaW5kZXggMTg4ZWM1MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0ZmI3OTI3
NjQ2NC4uMGNiOTVkMWI2YWEzYjgxYjIyZjU1MjE1ZGE3YjkyZmE0MmRiOTk4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBl
cyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0K
QEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+
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
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGIwOGMxZDIx
Y2Y5ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5MGU3ZmE1N2RhZDk4
OTFkNDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
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
ICAgIGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBT
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
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFi
MWI3YmRhNTQxZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4MDliYTY5N2YzIDEw
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
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTku
LjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6
On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJj
ZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1v
cnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RG
TW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2
ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdj
ODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1Ymxp
YyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZmNjZmRkMzkxZThkMGM4NDI1OTk4ZDI0MGQ3
YjRjODc2YTAwZmZlLi4xZTJiMDQxNGM1MDc1N2RlNjMxYTlhOTQ0NmMyMDRiOGRkNGI0MzFlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCiAyMDIxLTEyLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTW92ZSBpZi1kb21haW4gYW5kIHVubGVzcy1kb21haW4gY29udmVy
c2lvbiB0byBXS0NvbnRlbnRSdWxlTGlzdCBwYXJzaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFj
YjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmJhYWUyN2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZi
ZDRmMDUyMmMyMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MywzOCArNDMsNDAgQEAgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZN
aXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxl
IikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJU
X05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZl
cik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRp
Z3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dU
KGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
Y29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBj
b3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7CiAgICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+
c2l6ZSgpKTsKQEAgLTgzLDEyICs4NSwxMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xl
YXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
QVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIpOworICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgp
ID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNU
X0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAg
LTk2LDcgKzk5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGEx
W10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVz
dERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwpAQCAtMTExLDcgKzExNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwg
J2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IyKSk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKQEAgLTE1MSwxNSArMTU0LDE1IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1h
c3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1
cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBh
cmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVz
dCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sg
Y29weSgpLgogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsK
KyAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7CiAgICAgQVNTRVJUX0VRKGxl
bmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKyAgICBBU1NF
UlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xv
bmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwg
Y2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUsMzAgKzE3OCwzMyBAQCBzdGF0aWMgdm9pZCBjaGVj
a0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0
IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMg
PSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2sn
LCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgCiAgICAgYXV0byBh
YmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRT
b21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAg
YXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsK
LSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamts
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZm
ZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdo
LmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBn
aDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJo
Iik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwog
ICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1
ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7Ci0gICAg
Y2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAg
IGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOworICAgIEVYUEVDVF9F
UShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBn
aDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEo
KSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIxMCwxNSArMjE2LDE1IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9OwotICAgIGF1dG8g
YnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQ
RUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCiAgICAgYnVmZmVyMS0+YXBw
ZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwogICAgIEVYUEVDVF9F
UShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdi
JywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwg
eydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywg
J2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0p
LmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRj
NDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3MjkwMzQ1YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlm
OGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNjIsNyArNjIsNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3
b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxl
UGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0
aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446870</attachid>
            <date>2021-12-11 03:58:32 -0800</date>
            <delta_ts>2021-12-11 05:11:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211211225827.patch</filename>
            <type>text/plain</type>
            <size>441728</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uZjMwNzYxNjgyMDI2NmI3YmI3NzA4NmExMTY2Yjhk
MzY4Y2MyYTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29yIG9uIEF1
ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1MzhmNjk0
YzE0NTlhYWU0M2I3MTI4YmMxLi41NjdmNmQ0YjU3M2JkZWM2ODA2ODhhNjQ3M2ZjNzZkZTY5N2Vl
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
ZFJlYWREYXRhVVJMKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6
ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
YXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rp
b25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMTEgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCB0cmFj
a0NvbmZpZ3VyYXRpb24gYWNjZXNzb3Igb24gQXVkaW9UcmFjayAmIFZpZGVvVHJhY2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBmOTc5NzgwODZmOGZiYmY4ZjBhNjQ5NzA0ODIx
MGI1ZTczZmRhYy4uZWZmYmM0YmYwM2FmYjJmNjk0N2VjYTkwYmM0OTMwMzViZTk0NmI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0xMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTczCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzk0N2ViYTIyYTI1N2M5YmQ4NGE5ZmI2NmMx
YTI0ODY2YzliMjFiNi4uM2ExOTE2NjMxNzcyMGY3MjNlYjRkNjBjZjVlNmRiYjI4MzQ2ZDZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6Cisg
ICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAg
KiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuaDoKKwogMjAyMS0xMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGEgYERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnlgIHRvIGNvbnRyb2wgd2hpY2gg
cGFzdGVib2FyZCB0aGUgV2ViUHJvY2VzcyBpcyBncmFudGVkIGFjY2VzcyB0byB3aGVuIHBhc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRm
YWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi41YmEwOGJmYjE1MGNjMDFkZTBiZDMxYTAyZTAwYWZhOTMz
OGVmMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlnb3VzU2hhcmVkQnVm
ZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi45YjU5
ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMwNzRmZThmMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBi
b29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAg
IFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5
MDc4Li4yYjE2MGEwNzgwNGExMzI3OGQ2ZGIxZmY4M2M4MDgyMWQ5MGJkOGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjY3LDcgKzI2
Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nh
bml0aXplOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgewogICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0g
U3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1
cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgz
MjhhZjMwN2EzYTQ0MTAwLi41OGNlODA5YWU2OWUyMDRiN2MwOWU1OWE4MjA2Zjc2ZDAyN2EwNTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGlt
YWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAg
IGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkp
CiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBW
ZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRh
Lmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3
ZTViZi4uMTU3YzVmNTJjMDI2YmZhYTk3NjRlY2QyNTA0MjNiMTVkMTg2MzNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIw
YzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMy
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6
UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwg
WyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBm
b3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwg
W10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBk
ZDdmMDA3MWQ0MjRjLi42ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICsz
MDEsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZv
cywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25z
ZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwg
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CiB9CiAKLXZv
aWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25z
ZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9u
c2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJvZHkuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0oKSBtdXRhYmxl
IHsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
KQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAg
ICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5k
ZXggMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRi
M2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgp
IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURh
dGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxG
ZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5k
ZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFl
MDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25z
ZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xh
dGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBb
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0s
IFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0
dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcg
KzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8
Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVm
ZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRl
eCA5NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNj
YTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252
ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdF
QkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVz
cG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBS
ZWY8U2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7
CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4
ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3
M2M1MDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYg
KGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYg
YnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3Ry
aW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3
YTMuLjA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVu
Z3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgp
LCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0
YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcg
QEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3Qt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1
cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
PiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMw
NDczMTI4NGY2NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5
OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRl
bnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQg
dGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxG
b3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9y
bURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFC
b2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRh
KCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAg
LTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNv
ZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJh
bXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRG
OEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6
OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZl
cigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFy
cmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3
KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZm
ZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxl
bmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRhNTY3NThmYzAw
ODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAot
ICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1E
YXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
aW5kZXggZGM4NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3
OGFlODc1ZGMyNTYzZWJjYjJhNzg4ODVkMzBiYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0g
cmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVu
dFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBk
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0p
OwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBA
IC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAg
IGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBw
YWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0
YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYg
KGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3Ry
aW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7
CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVj
ZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZl
NzllNzZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9
CiAKQEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJl
c3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAg
ICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdU
Rk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAg
ICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERh
dGEoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTVi
Yi4uMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkg
ZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNw
b25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5
KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNp
emVXaXRoUGFkZGluZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRk
ZDA0MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcg
KzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRh
NDU3NmMwNi4uODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwCkBAIC00Niw3ICs0Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdo
bGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVy
CiAKIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRl
Y29kZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZm
ZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
ZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3
Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJL
ZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7
CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4Miwx
MyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYg
a2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJL
ZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50
OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1
YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhk
NmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAg
KzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2Vy
aWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXpl
LCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9v
bCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMy
MzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAg
Ym9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3Rv
cmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
bigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNh
Y3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtl
eVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAg
LTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVj
b3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5k
ZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRf
dCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJl
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGlu
IHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1
ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1
ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVk
IGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4
aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0
ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5z
YWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlE
YXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBA
IC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGlu
IGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0
LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5
UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURC
S2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5n
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyAr
MjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBw
ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6
bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRG
b3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBr
ZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5k
ZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwx
NCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsK
IAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURh
dGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBs
b3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93
ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2Vy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5
ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5n
ZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJh
bmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0
aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRm
MDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgx
MDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBT
UUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9i
KGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkp
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVt
ZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3
MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5k
ID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAg
ICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIw
OGVmMzZmNjgwM2M0Li5lNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENs
aWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0
byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNz
YWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5k
aWRSZWNlaXZlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAg
ICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShT
dGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0
M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcy
MWU4YTkxY2I4NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0g
dHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwo
KS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9k
ZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91
cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBp
bnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQg
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
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGEx
MjZjOTgzMGQ2MDZhYmIwYzNhOGM2OWE5YzMxZC4uM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4
NTYzMDY0OTkwMDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
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
dG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFk
ZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmY1YmYyYjcyNmU2YWU5Njg5
MzUzYzBhN2UwOGI0NWVmZGE1ZDkwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5h
bCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRl
bnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisg
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlw
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI4MzFjZDNmYTljNmE0
ZjlmZjlhOWEwZTI1YzNiNDJlNTJkMWI2NGQuLmNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJl
YjAxZjE3NGY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1
OSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJ
bmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8
U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJv
YXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFk
ZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjAzMTM2
ZmZjZjFmNmIzN2U2YjA3YWI2MjMyZTYxZjY2ZGVlNzU4Ny4uOGRhOWZjYzY0MTZiNjcyMTdkMTc0
OWViYjg5NzgwN2U0NzYxMTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1
NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFz
cyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBj
bGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29t
cG9zaXRpb247CkBAIC01MzgsNyArNTM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxh
Y2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9v
bCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTc1LDcgKzU3
Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudElu
Zm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50
JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYy
MywxMiArNjI0LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4g
YWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
OwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsK
ICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0
cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVu
dERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4z
OWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICsz
MywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVu
dERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVm
NmRmMDUyN2IwMTUuLjFkOTdhY2QzY2M3OTE2MWIwYWM1MGM0YmY3MGNiMTUyZmMwZjQ4NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03OCwxMCArNzgs
MTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFy
Y2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZl
cihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgIGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2Qy
ZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjc0ZmU4Mjg3ZThjMzkzYmUxN2E2NzY2
NTM4ZDlmMzRhMDkwYjMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBX
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmls
ZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxl
OjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZl
ci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUy
OWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li5lN2EwNzFjYTQwMzllMDFmNDhk
MGI0OTk1MDFlZDY0ZGU2MjZmMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVy
IHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
ICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQw
YzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQg
RWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmli
dXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlk
KWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZv
ckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQor
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRy
aWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAg
ICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hp
dmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29k
aW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0
dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7
CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4
Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVz
QW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91
dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0
b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1l
bnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAg
ICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7
CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRh
dGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0
KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkp
OwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRh
VHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6
OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJW
aXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0
YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwog
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3Ry
aW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0
cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcp
CiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21S
YW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21S
YW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTEx
Yzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0
MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVy
OjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwg
Qk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNl
KHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBl
KCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0
L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpz
dWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMw
MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwo
RG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewog
ICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNl
LT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJl
c3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUg
fHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2Vz
dGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBw
ZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkp
IHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAg
YXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNj
ZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjQ0MDU5YmU1YWU5ZTgxZGEzOWQ2
Mjg5MjAxZDhlZDQ5MTU5NzM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8g
ewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsK
LSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7
CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNl
RW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsg
YXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5k
KHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7
CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1M
T2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVu
ZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2Ut
PnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAg
LTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hp
dmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZl
PiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJj
aGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8g
YXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBp
ZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFy
a3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYK
ICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9t
VVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25O
dWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgo
bWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBN
YXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RR
dWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3Vt
CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJh
bWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAg
IE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07
CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWly
a3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9y
RnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBt
c29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdl
cygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIs
NyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0
eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5
cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpp
bmRleCAzMDM2Y2QzMmQ2Y2Q4MzJjMjIwMjgzYTg0NDVhODk5YTVhNjZjYTNjLi5kZjA5MTlmNzVh
Y2Y3OWE4MzkyODMyMTE5MGM1Y2IyYmFmNzQ3ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Q29weUZvbnQoKQogICAgIFBhc3RlYm9hcmRCdWZmZXIgcGFzdGVib2FyZEJ1ZmZlcjsKICAgICBw
YXN0ZWJvYXJkQnVmZmVyLmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZp
ZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcGFzdGVib2FyZEJ1ZmZlci50eXBlID0gbGVnYWN5Rm9u
dFBhc3RlYm9hcmRUeXBlKCk7Ci0gICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CiAgICAgcGFz
dGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQnVmZmVyKTsKIH0KIApAQCAtMjUwLDE1ICsyNTAsMTUg
QEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFz
dGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1
bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVl
IHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNl
ZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9T
IFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lk
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3Qg
U3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxl
c2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVu
dHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQu
dHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNl
dHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0
dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0co
RlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVt
cGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgp
LT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9m
IHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxk
IHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1l
bnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2Ug
Z2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0
NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVk
NDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBp
ZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAg
ICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAg
ICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0
ZTNkYWYxYWRlNDczMTg3OTViYWJhZjg1MmMyMzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5
NzdmZjdkOGYyNjIzYzM3ZWNiYTdjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEy
ICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNv
bnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7
CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0
ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFz
ZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2
YTgzZDgzMWQ4OTdmODE2N2EzMmJlMjM3MzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiAr
MTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZy
YW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRl
bnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7Cisg
ICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4
IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAy
YzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVu
dEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2
ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChh
dXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRh
UmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3
YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlm
MTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxv
YWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vz
c0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigp
LCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNh
bm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQw
ZWFhZjNhNTAxOGQ5MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1
dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgp
CiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQg
PSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCmluZGV4IDUxMjI3Yjk2ZDdkMTdjYTA3ZWUzYjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZi
ZDMyZmMyZWNmNDZhZjdjZDkzNzlhOWQwMGM5OTExNmViN2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJl
c291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwog
Y2xhc3MgRnJhbWU7CkBAIC0yMzUsNyArMjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAg
ICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBw
YXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNjEyLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkK
ICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jl
c291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5
ZmMwYTUzM2RkYjQ3OTNhNGIuLjA3NmYzN2RlMzI1OWEwM2MzODdhMWUwZDJhZmNhZWQyZDgyNTli
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAg
ICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25v
dXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IGZlMzJkOTRlNDI4NjU5ZDVkNjFkYWJhNzIxOThlYjE5NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTli
ZDQ3YTdjYmJkOGM4MzE3MzRjNGJiMTAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVz
ZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
KSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwg
eyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRD
aGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDZjNWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4
ZjYwZDNhOThhOWViOGRhM2NlNmI0NGZhZDJiYzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5y
ZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAt
MzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9u
b3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVu
dGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAg
ICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCku
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9n
U3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5
MzVjMzM0NjZjNDZjYWUwMjBlMmYzYWMuLjljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3
MTk4MmU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3
IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9w
dGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50Kiwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRv
bVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2
aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYg
PSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVz
dCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJm
MmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291
cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpAQCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3
ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhi
ZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAg
bV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZj
NjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7
CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUg
TUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3Qg
dG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlv
biBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGgg
Q0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2
MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4
MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRp
ZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNv
dXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJv
YmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVt
b3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICBy
ZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRo
KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291
cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3
Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0
YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8g
YSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBw
b3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAv
LyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNh
bmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0
aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBy
ZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNl
KHJlcXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90
IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsK
KyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3
MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNw
b25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3Vz
bHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEu
LjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9w
YXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkg
OiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0
MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAg
ICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAg
ICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQt
PmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNv
bHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3Rh
dGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1
ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJj
ZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkg
Q0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0
YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAg
ICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5
IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVz
b3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAg
CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5n
ZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAt
MjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlz
IG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNp
b24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0
VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5u
b3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3Vy
Y2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAg
ICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5n
ZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFw
bGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0
KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBl
Y3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJh
Y3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5
NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGlj
dGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwg
cm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5S
ZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0
ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJj
ZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAg
ICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAg
ICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUp
KTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcg
KzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2Ug
PSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCBy
ZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJs
ZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcg
KzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJh
bWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3Jh
cCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQg
aW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3Ig
ZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFt
ZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwi
IHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJh
bWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVl
Li43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0x
OTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBh
dXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1
b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29k
ZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQg
Zm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwx
NyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9
IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7
CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAg
ZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBk
YXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
ZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1J
TUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBp
cy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0
dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5k
IEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcAppbmRleCA0ZjIyOGU4ZDAzODliOGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1
YmQyLi44NGFhNzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAog
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwot
ICAgIGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmlu
ZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVk
Y2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
Y29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNr
SGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4
dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBp
cyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
QEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRh
RnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEg
dG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBk
dXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVl
dFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAg
ICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFz
IGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hl
YXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQz
MzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hl
ZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lk
IENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChk
YXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3
ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsK
IH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBi
b29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIm
IGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0
ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZm
ZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFw
cGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJu
IGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29s
bGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9u
dDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNM
b2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxl
IChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGll
bnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3
ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRp
YXRlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnRE
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rp
b24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9y
bURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29u
dGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURh
dGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9v
bCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAg
Ym9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjll
ZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAx
ZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpj
bGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJ
bWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkg
PCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7
Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1
cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVS
UykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6
OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3Vs
ZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZl
cnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJj
ZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4
NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNv
bnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2
b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUlt
YWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2
OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3
ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsK
ICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIg
KzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZm
ZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xp
Y3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1
dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkp
IHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBp
bmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAg
ICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRh
bERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgyMDAwMTE0YTcyYTNlMmEwMTBlNzgx
MDg4Li5kZmJhNzYxY2IwNTg2NGY1NDI0NTIzYmEzN2NkNTVjNjAwNWRlZWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkxNSw3ICs5
MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJl
c291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCAr
OTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJl
ZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5l
d0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFj
ZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNl
NmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3
ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNl
bnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJl
cXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9u
b3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2gg
Z3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIx
YjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVz
ZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAg
ICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdz
LCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAg
ICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2
OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1Yzdi
ZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAg
ICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxl
ZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQo
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7
CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAg
ICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFt
X2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9
IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAg
ICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVs
bHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2Rl
NjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0
ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVu
dCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
b252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZl
cnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7
CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25z
dCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDU0ZTY3NmNlNTBiMDk2YjU2MDdjM2MwMzBm
N2Q5YWNjMDVjNGZhODguLmI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05
OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lk
IENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4
NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYz
YjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRl
eHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAog
dm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkK
IHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/
IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1f
Y2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQz
NDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygp
IGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAg
fQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBh
YzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICsz
MiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVN
b25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9y
ZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAz
YmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2Qy
ODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkg
dG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0
IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91
dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJM
Q2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsK
ICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2Fj
aGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25p
dG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6
OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNl
c3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJh
Y2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRv
cjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVC
YWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7
CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDE4
MTc1MzFjYjY5OGI4YTRlZGEyODEwY2M0NjZjODE2OWNiMTYzZWIuLmNlZDU2MDljMDA1YTUzNTJi
MzNkMTE5OGY0NWI5OGJhODRhNzFkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApA
QCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBhc3Rl
QWNjZXNzQ2F0ZWdvcnkgOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05OCw3ICs5
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTdlMDFiNWM2OTc2ZDY3ZjBmM2JkZmNlZGVjNmFi
Y2YwNDg1MmM0NC4uN2I5NjFkYjA0MDRjMWQxOTczNjA3NGU0YTlkNmMxZGM5NDIxMjI3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTczLDcgKzE5NzMsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6
OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdo
ZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0
byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxs
ZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4K
LSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE2NWFhODA1OGEwMzkwYjQ1MTU3OWEx
NDc2MWJkODY3OTQ5MzY0MzMuLjAxZTE2ZGQ5OGY0ZGYwY2ViMjFkZjkwOGQxZjQwYzYyNGFhZTRj
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2Vy
aWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVz
OjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBk
b2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlN
RVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNv
ZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1f
cmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsK
QEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHls
ZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmll
ZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5jb2Rp
bmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAg
ICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29k
aW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9j
c3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2Rl
KGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
IH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIs
NyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNo
ZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmws
IGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7
CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcx
Li5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2Vy
aWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2
OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBm
ZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5
LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBT
dHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVj
dCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVh
ZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5k
NjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVy
KCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5j
ZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZm
ZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsK
LSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7
Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRh
dGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVz
LmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisK
ICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0Zp
bGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwog
ICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21w
bGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmlu
ZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQy
NDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyAr
MTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3Ry
aW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwg
VCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3
MjQ3MWFlMjg2NGY3NzA4MmM0N2Q2N2YyNjNlZDVkZjk1OC4uNTk2YWZiOGU5MTg4OGMyYWE2NzJm
YzBlNWQwNmNiNjQ0OWRlZGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBz
dHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAg
ICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5
cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApp
bmRleCAxNDc2NDFkZGI2NTg4NWUzOWE4M2M2YTQ1NTU2YjFlYWE2YjM2NWY3Li40ZTI3ODJkOWJh
Y2I5ZDAxOWQxMjAwMjBkZmYwMTE2ZTI1MjMyZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
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
c3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTE0Myw3ICsxNDQsNyBAQCBz
dHJ1Y3QgUGFzdGVib2FyZEJ1ZmZlciB7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAjZW5k
aWYKICAgICBTdHJpbmcgdHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogLy8gRm9yIHJlYWRp
bmcgZnJvbSB0aGUgcGFzdGVib2FyZC4KQEAgLTE2NCwxMCArMTY1LDEwIEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNo
aXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVk
QnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2Vi
QXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJl
YWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMzA4LDcgKzMw
OSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFz
dGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRs
ZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMzQwLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0
PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9y
PFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYp
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1
NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi42ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4
ODc1Zjg4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
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
UGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRh
YzMyODdlNmFiYzAzLi5iZmFmYzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAg
LTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSB7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CmluZGV4IGU3NzlkYWVhZTY1OTUzNDE4ZDkwYzE3NTAxMmQ1OGZiOTY4YTUwMGMuLjliMWQ0Yjk1
ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZkOTE4M2I5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFBhc3RlYm9hcmRDb250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRfdCBhZGRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFz
dGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xv
ciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25z
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
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlYjQxYTY4
Y2M1YWY5MjJlODgyZWMyNjhlZGIyZTk5MDVmNDNjMjQ0Li41MjcwYzU5ODQzNTUxMDRmOTFhNWNl
NTQyMjIzYjQ0OWMyYjUxODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVj
dCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Q
YXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJ
bWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJv
YXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJv
YXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xv
ciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZElt
YWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRl
KGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBp
bmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYi4u
YTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1
Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFk
MzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uZWFjODQxODNjYTNkOWE0NjQ4NzhjNmM0OGZjZTAyMjBh
ZGQ0NzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0z
NywzMSArMzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKIH0KIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7CiB9CiAKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cit9
CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Cit9CisKK1JlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYm
IHByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKHByb3ZpZGVyKSkpOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKKwogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUocHJvdmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXBwZW5k
KFdURk1vdmUoZGF0YSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYg
VVNFKEdTVFJFQU1FUikKQEAgLTczLDI2ICs5NSwxMCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZl
cikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0p
OwogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxl
TWFwcGluZykKLXsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBp
bmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1v
ZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGZpbGVQYXRoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKLX0KLQogc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29tYmluZWREYXRhOwpAQCAtMTAzLDMwICsxMDksMTYgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29t
YmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUg
YW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2Vz
IG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8o
bl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkg
PD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAg
cmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oY29uc3Rf
Y2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
aWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAg
YXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6
ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewot
ICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRh
KSk7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QK
QEAgLTIwMiwxMCArMTk0LDEwIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwpAQCAtMjEzLDE5ICsyMDUsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3Vz
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBs
ZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGln
dW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQpAQCAtMjQzLDE3ICsyMzUsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXpl
OwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0g
ICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50
czsKQEAgLTM1MywxMiArMzQwLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9
CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRv
IGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsK
LX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdAogewpAQCAtMzcyLDQxICszNTMsMTIgQEAgYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkg
Y29uc3QKLXsKLSAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBb
XShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IGRhdGEuZGF0YSgpOyB9LAotI2lmIFVTRShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRy
PENGRGF0YVJlZj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5
dGVQdHIoZGF0YS5nZXQoKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAgW10o
Y29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBu
dWxscHRyKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25z
dCBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBkYXRhLT5kYXRhKCk7IH0sCi0jZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNv
bnN0IFByb3ZpZGVyJiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlk
ZXIuZGF0YSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRh
aW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwotfQot
CiAjaWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFy
ZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiB7eyByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07Ci19Ci0KIGJvb2wgU2hhcmVk
QnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAg
ICAgaWYgKHRoaXMgPT0gJm90aGVyKQpAQCAtNDU2LDcgKzQwOCwxMTggQEAgYm9vbCBTaGFyZWRC
dWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUo
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
ZW50LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCksIHNp
emUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBV
U0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0YVNl
Z21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9Cisj
ZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50
OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlm
CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAgIFtd
KGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdM
SUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikK
KyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9
CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTM4LDcg
QEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJl
dHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RG
TW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0
aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUo
KSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyNiArNTUyLDE2IEBAIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRh
VmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQt
PmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50
LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBz
aXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCld
KCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2Nh
dGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBj
b25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU4Nyw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVm
ZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5
MTgzOTM2OGFkLi43ZDg3ZDM5N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxMzggQEAg
Y2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgor
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXpl
KCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5v
LCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBp
bmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0Uo
Rk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
LSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVu
ZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRy
PEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgp
IGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21l
bnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMg
dXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhl
IGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0
aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgp
IGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMg
Y29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChU
aGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRy
YWN0RGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIC8vIENyZWF0ZXMgYW4g
QXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRo
YXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMg
aW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0K
LSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsK
LQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5j
dGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4g
c2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAg
IHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAg
ICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9j
YXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgp
OwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhw
bGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1
Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0
YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVy
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7
IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFw
cGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlk
ZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAot
ICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlh
bnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXIm
JiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlk
ZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFBy
b3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
KyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNG
RGF0YQorfTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3Mg
U2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4g
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEq
KTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZE
YXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdC
eXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0g
ICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7
Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBB
cnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQg
YnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQor
ICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9V
TkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5k
aWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVm
KTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVh
Y2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYp
PiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU1ICsyMDIs
MTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJv
b2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7
IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhs
b2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4
U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigp
ID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7
CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
KworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3Vv
dXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7
IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92
ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwog
I2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAot
ICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAg
Ly8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRo
YXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VEYXRhKCk7Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4g
dGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50
Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVu
dFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJv
b2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCisvLyBBIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkg
YWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CitwdWJs
aWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNv
bnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3Nh
bWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShi
dWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB5b3UgY2Fu
J3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAg
IC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNzZXJ0LgorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLikg
PSBkZWxldGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1h
cHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNF
KENGKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKIGlubGluZSBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09u
ZVJlZigpKQpAQCAtMjY2LDIzICszMDUsMjQgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6
ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFT
ZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6
ZSk7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0
YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2Fi
MzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3
MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBz
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3Vy
cmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAm
JiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0Fy
dHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3
b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwg
bm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWlu
Z0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggNDQ3M2Vj
MjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0
YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJD
Rjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkK
IHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RC
aW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4
YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rpbmco
KSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJm
Y2I5MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDEsMTcgKzQx
LDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNp
bmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50
YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Ig
bm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJl
Zj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJl
Zj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBp
ZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVm
Pj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAg
IHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRh
dGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6
ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
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
NjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi45ODA1NDdiOGNjNGM0YTg4Y2ExNTVjYmIxNzgyMGFm
ODVlMmRjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5T
RGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7
CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAg
ICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYx
LDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTUsMjcgKzk1
LDI2IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0
YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CisgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkp
OwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9
CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29u
c3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7
CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNE
YXRhKCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKQEAgLTEyNiw3ICsxMjUsNyBAQCBSZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiAgICAgfSk7CiB9CiAKLVJldGFpblB0
cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0
V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLjY2
NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qg
b2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAg
IGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3
ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzgyOThhMWZlYWI1ZGYzYTczZDUzZTVmNzE5NTZhMmU4
MzIwMGY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTM4LDcgKzEzOCw4
IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8
fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEu
ZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAg
ICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0yMDYsNyArMjA3LDgg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4
KQogICAgICAgICByZXR1cm4ga2V5SWRzOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRh
dGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAg
ICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRz
QXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsNyArMjQ3LDcgQEAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29u
dGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4g
YXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0
dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQg
dmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgi
a2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2Jq
ZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YmYwMDgzMmE0
MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4Li43YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4
NzU3M2Q3NWQ3YzBiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6
RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6
OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVy
KCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAu
LjU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBv
dmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMi4u
ZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIg
KzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5
U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFy
aWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQ
dHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1
aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2Fz
X2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdl
dCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRh
dGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdl
dCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRh
dGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggZTU2NDJiY2Y2NzBj
ZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVj
NTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29k
ZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAg
IHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4
YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li43ODg5MTdkYWVmOTY4OWNh
N2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTM4LDE2ICszOCwxNiBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRl
cz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7
CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhf
ZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nh
c3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDRl
OTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAuLjEyNTg2MmU3MmE5ZjlkODY5
NmNlMTZjYWNmZjZiZjcyMDdiNDVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJz
dGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9
CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
KQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hl
ZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFw
cGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzQ0MjAw
NGYwMGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRjZC4uNGM1YzhhMzk2MzNhMDY0Nzg5OGI1
MmEzOTQ1MjVmYjFhZmIxMmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBWaXNpYmlsaXR5
IDogYm9vbCB7IFZpc2libGUsIEludmlzaWJsZSB9OwogICAgIGVudW0gY2xhc3MgT3JpZW50YXRp
b25GYWxsYmFjayA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiA9IE9yaWdp
bjo6TG9jYWwsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sIFZpc2liaWxpdHkgPSBW
aXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxs
YmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9u
dFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5
YjE0ZTg0YjIxOS4uZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaApAQCAtNzQsNyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIC8vIFRoaXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVh
dGVkLCBubyBpbnN0YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdh
eSkuCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhIHsKQEAgLTIyNCwxMyArMjIzLDEzIEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Zm9udEZhY2VEYXRhOworICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZh
Y2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShX
SU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApp
bmRleCAyY2Y0NDhiZWEyZmE2YWU0ZDQ3Zjk2NDAwMmIzYTkwNmMwMTI5MDY3Li42NzVlMjRiNDBh
YzdhYWRlNzQwODZmMjQyZWFkMDE1MjIxYzAyNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBT
dHJpbmcgY3JlYXRlQVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiAgICAgICAgICwgaGV4KHBhcmFtZXRlcnMubGV2ZWxJREMsIDIpKTsKIH0K
IAotc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxBVkNQ
YXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTEwOjIw
MTQKICAgICAvLyA3LjMuMi4xLjEgU2VxdWVuY2UgcGFyYW1ldGVyIHNldCBkYXRhIHN5bnRheApA
QCAtMjU1LDcgKzI1NSw3IEBAIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5n
KGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGNvbXBhdGliaWxp
dHlGbGFncy50b1N0cmluZygpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4g
cGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiBjb2RlY0Nv
ZGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1l
dGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiBj
b2RlY0NvZGUsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBJU08vSUVDIDE0NDk2LTE1OjIwMTQKICAgICAvLyA4LjMuMy4xIEhFVkMgZGVjb2RlciBjb25m
aWd1cmF0aW9uIHJlY29yZApAQCAtNDM2LDcgKzQzNiw3IEBAIHN0ZDo6b3B0aW9uYWw8RG9WaVBh
cmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykK
ICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVy
cz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgRG9WaSBDb25maWd1cmF0aW9uIFJlY29yZCBp
cyBjb250YWluZWQgaW4gIkRvbGJ5IFZpc2lvbiBTdHJlYW1zIFdpdGhpbgogICAgIC8vIHRoZSBJ
U08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdCwgVmVyc2lvbiAyLjAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggYWY3NWM2MmQxMTU4
MGFkMDM4ZDcxN2JlOTRiMzMxZDM5ZGRkYTI3YS4uZWRmZWNiMjZkODk0NjdhMjNkMWY1NzFjYmM1
ZTkxYjJmYTM0Nzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuaApAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm91ckNDOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQVZDUGFyYW1ldGVycyB7CiAgICAgdWludDhfdCBwcm9m
aWxlSURDIHsgMCB9OwpAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQVZDUGFyYW1ldGVycyB7CiB9
OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZD
Q29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0
ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVBVkNDb2RlY1BhcmFt
ZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYpOwogCiBzdHJ1Y3QgSEVWQ1BhcmFtZXRl
cnMgewpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogfTsKIAogV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQ
YXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZD
UGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91
ckNDJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25z
dCBGb3VyQ0MmLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1l
dGVycyYpOwogCiBzdHJ1Y3QgRG9WaVBhcmFtZXRlcnMgewpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1
Y3QgRG9WaVBhcmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxE
b1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2Rl
ckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY3JlYXRlRG9WaUNvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBEb1ZpUGFyYW1l
dGVycyYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
aW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5
ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVs
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZN
b3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUw
MzQ0M2RjNjMwZDA0ZTEuLjkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwog
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlt
ZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAg
ICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhw
bGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsK
IH07CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVs
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5j
b2RlciA8PCBtX3VybDsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAg
cmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNh
MWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBiNmZiOTA1NWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1
cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAg
QVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHJl
YWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYg
dmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJH
KG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgp
IC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wg
d3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQogCiBz
dGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3T0ZG
JyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsK
ICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKIH07
CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VSVF9B
Ukcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkK
ICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiti
b29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFN
KGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhf
dD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29u
dmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBi
dWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdl
NGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgK
QEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hl
dGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVy
Jik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNv
bnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBv
ZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5
bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29m
ZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYg
dGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0g
aGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBz
Zm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBj
b252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4
MjljZmRiNWM2YWY3NTRhOS4uZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6
ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUo
KSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
ICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9u
VXRpbGl0aWVzLmNwcAppbmRleCAxNjExYmFhYzQzNzBiNWZjOThhMjkyMDc3MjM1ZDQ1ZTAyYjVk
MGJhLi5mYzlhYTk5YTY5ZGZhZTg5ZTY1YjJhYjNhZjQ4OTE0MDc2ODVmZGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVz
Y3JpcHRpb25VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKQEAgLTEwNiw3
ICsxMDYsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNj
cmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0
ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Ft
cGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJhdmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2Ft
cGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOwotICAgICAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7
CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFw
YXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CkBAIC0xMjIsNyArMTIy
LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lv
bnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNhbXBsZUV4
dGVuc2lvbnNEaWN0LCBDRlNUUigiaHZjQyIpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4
dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsKLSAgICAgICAgICAgIGF1
dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBs
ZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAg
ICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25S
ZWNvcmQoa0NNVmlkZW9Db2RlY1R5cGVfSEVWQywgY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7
CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJo
dmMxIjsKQEAgLTEzNyw3ICsxMzcsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRp
b24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJkdmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImR2
aDEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Ft
cGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZURvVmlE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAg
ICAgICAgICAgIGlmICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
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
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMWE0M2M3ZGVkMjc2ZTJjM2U1ZjZmNDNh
MzhmMDUxMTI3MjA2ZDBhMy4uYWJkODFlNWYzYzFlYTUwZTQyMmUyZmEzYzJiYTFkMThjZmUzMWFl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0Rh
dGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hh
cmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9w
YXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5
KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZs
YWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uMzJjNWE2
NjhhMTZhZTQ4ZWVlOGM5ZDM4ZGJmZjEzMzA1ZmRhYzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMjE0LDkgKzIxNCw4
IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fYnVm
ZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
KTsKIH0KIApAQCAtMjI4LDcgKzIyNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNyw3
IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRh
VVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpG
b3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
OjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAg
ICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
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
Y2RlZDRhNjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMy4uYjc0OWZjMTU4ZGZhYmVm
ZDNiZDhjNDU0OThiYTBhNWIyOTNiZjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAK
QEAgLTQyNCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVh
dGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhp
cyk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9
CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBkODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJh
ZDlkYzM4NDY4Li4yYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2IDEwMDY0
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
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNiYjQ5
ZDE3MzYyZjcxMmQyNWRmZTgyNGRmYzFjMzgxYTVkYTAyOTMuLjNhMjAxNTc4MDE0ODgxMGFjZTU0
ZGY3YjA4ZTRkZjdmZDUyMzdkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVy
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
N2JiMjc0M2E4MjhhMWFmMDRhNzllZGQ3OTMzZjM3YzQ1MWYzMmM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
IAogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAs
IG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQorICAgICAg
ICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQgPyBwYXlsb2FkLT5tYWtl
Q29udGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpKQogICAgIHsK
ICAgICB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMi
X3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5j
SWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRh
MWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0
YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBi
b2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50
ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBi
dWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcx
OGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjdiYzY2N2U0NjliMDA2MTUx
ZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRh
IGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhi
Y2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRv
cHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZE
b2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21w
dXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRl
eCA1ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVm
OTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRh
YmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9u
Q291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsx
XTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24g
dmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0Nv
cnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGlj
c0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFs
aWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
SW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVk
U2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09m
ZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAg
ICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5
IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsK
IAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2Vt
Ymx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkp
CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAg
IH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQg
TWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAor
ICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2
YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAg
ICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5
cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3Nl
bWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAg
LTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUg
dmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpv
bnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3Qg
TWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAg
Y29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRp
Y2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0
aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtj
b3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMq
IG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRo
Q29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBA
IHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhH
bHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAg
ICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0
aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2Yu
LjNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9m
b250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJj
M2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5
MTI2Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBA
IHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUg
T1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0
KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkg
fCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZh
bGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIs
IHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkg
PCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25z
dCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAg
IHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
b2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQg
YXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBw
b3NpdGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCog
cG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZh
bGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQp
IGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3
LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lm
IEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVC
YXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlw
aCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUlu
ZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29u
c3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAg
ICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEu
LjNjYTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBw
ZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBp
biBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9u
dFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1
c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wg
cmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVG
b250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcm
IGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNp
emVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRI
ZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0
YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9
CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRv
IHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
KQorUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJl
bmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJj
MTllMzdmLi4yMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50
OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1v
cnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5
UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3Mzdj
MWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAzMjM4YmZkMjgyZjcx
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFnZU9m
ZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxl
PihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNv
dmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7
IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0dXRp
b25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAgICAv
LyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMgYWZ0
ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxseS4K
IAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRp
b25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRhYmxl
ID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1YlRh
YmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExv
b2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3QgTG9v
a3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNv
dW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAgLTIw
OCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwTGlz
dEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3Vw
TGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0IEZl
YXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJl
T2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2
X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVD
b3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwg
JmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVDb3Vu
dDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tp
XSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcgQEAg
c3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBm
ZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAKLSAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBm
ZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlSW5k
ZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBUYWJs
ZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAgfSBs
YW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkpCkBA
IC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAKLSAg
ICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9w
ZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcgKzMx
MCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRT
Y3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFjb3Vu
dCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyArMzIx
LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZzZXQp
OwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZh
dWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0U2Ny
aXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMzNiwx
MSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9mZnNl
dDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZl
ciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxp
c3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0
IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9m
ZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2Ny
aXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVM
aXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVM
aXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3Jp
cHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9CiAK
LSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFi
bGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lzVGFi
bGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBGZWF0
dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2NSw3
IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVhdHVy
ZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxlID0g
ZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
dmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhz
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlw
ZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6Okho
ZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNh
bERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlw
ZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJl
ZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZo
ZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAg
IGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdT
VUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFi
bGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEy
OTVlMjQwZDIyNDQ5ZTQuLjhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0
aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUg
PSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1l
QW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uZmMwNGYx
NzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRm
b3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkz
MTEyZC4uZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0g
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKaW5kZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4u
NGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0
CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXgg
NmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5
Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAt
NTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2Jq
ZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhk
YywgLTEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBv
bGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0g
R2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAw
LCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMs
IG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVj
dGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
aW5kZXggY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YS4uN2UzYjM2MzJi
OTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0
UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9t
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3Zl
KGJ1ZmZlcik7IH0KLSAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVm
ZmVyKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRh
KCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1f
aW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3
OThiOTlkYWEyLi4zYzZhM2E1MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDEwICs3Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAg
ICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8g
b25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0g
ZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29u
dGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRh
LT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFT
dGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAg
IG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2Rl
U2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uZTU2NDcxMjAwMTY3
YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19z
YXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAn
XDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChqcGVn
X3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFy
a2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
IH0KICNlbmRpZgogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0Uo
TENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJk
N2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNm
YzgzZmRlOGY4NzEyYjcwODFlM2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAg
LTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3Jp
ZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0g
b3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxl
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggOWRiMGFiMzRiMjYxOGEwNDAyYjBkMjQzZGM4NzA3YTM2NzgyM2RlMy4uYWNi
YjgxYjA4ZDkyZDg3Y2E0MmZiZDMyMzg4MzJjMGYzNTFjZDcxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwx
MCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0
ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAwOwogfQogCi1pbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBA
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
cihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlw
ZSk7CkBAIC03NjEsNyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAogICAgIGlm
ICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjE2ZWRk
ODQ3NWUxNDg4ZGI5ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uYTE1MTZhZTM0ZjgyOWJhNzJjYTU2
MWQ5NWU0ZmM5NzhiOTUyZDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCBz
dGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVy
ICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkRE
YXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIG1fY2hhbmdlQ291
bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
SW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElG
RlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYg
KGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJB
cmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApAQCAtMzQ0
LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4
KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5
LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVi
b2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVn
eSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVy
biBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9s
aWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVy
QXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5n
IHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0Yjhk
YS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSAr
MTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQg
Zm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250
ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5j
b250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2Fy
ZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQppbmRleCBhN2ZlNzI1NTQzNzY2NWU4YjhhMGM3NDUzZDMwNDc0OWQ0NTYy
ZjY3Li5mODI4N2M4ZTY3MWM5Yjc5MmM5NTZiMzFjMDdjZjAwM2YyNTkzNWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
QEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+
KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0CiB7CiAg
ICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlw
ZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSku
Z2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29u
c3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExp
c3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNl
cmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmln
aW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3Jk
ZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBl
KTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdl
dCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRv
IHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3
NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURh
dGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpz
ZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJy
YXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUo
cGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBz
dGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFz
dGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFp
bmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CkBAIC00NTcsNyArNDU3
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBb
aXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMo
ZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5n
ZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNE
YXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwOCw3ICs1MDgs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJ
dGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAg
ICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpw
bGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3Rk
OjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDBjOTA4MTdjNGU5YjQxZjM0OWE0MWFlNjRiNzE5
MDZiOTUxZWI4OWEuLjYyMzY0ZDcxM2M5NWE5Zjg0M2M3ZDI5YzAxZjBkZWI5YWU2ZDE3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIs
MTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
cm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4o
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkp
OwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZTlkMzQ0M2Y4YjVjNjgyNDQ2NjU2YzE4
ODA1NjU3Y2MyOWQyZDgzNy4uMTA4MjgxMTMxZjgzZTk5MzcwZmM1MDk3ODMzY2M1MGVlOGFkYmRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwog
Y2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAg
ICAgc3RydWN0IEVuY29kZWRGaWxlRGF0YTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAg
ICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQog
ICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3Ry
ZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVj
MTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLjgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2Iy
MGExNDQ0NzhkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlc291cmNl
SGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQg
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4
IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEuLjg4ZGVkZmE0NWMzZjRj
NDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAg
ICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxl
PSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVC
dWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxM
ZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRs
ZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExl
bmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2
Yy4uZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hh
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09
IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ry
b25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAg
ICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
c3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAg
ICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRl
OwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYz
NWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQg
ZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vz
c0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewog
ICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHBy
b2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAg
ICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnBy
b2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlT
dGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewog
ICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEg
dXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVt
b3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3
ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1v
dmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0
YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5
NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQw
MzI5MjZiOTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJl
cXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFu
ZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1
M2Q3MTdlMDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAg
dm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwot
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIp
LCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
Y29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMy
YzM4MWQzZDE5NjEzZTYwLi4zY2EyMDgyMmMwMzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBp
ZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNzM2NWYwMTA5NDRhOTI2YjBlYmNhOTk2YmRk
YWUxNDQ5NTBmNjNlMy4uYjgyNzU0MzcxYmY3MmM4ZmZlMDg1MWFjZTgxMGU0ZTUzZDlhMTQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
OTc4LDggKzk3OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRl
bnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBp
ZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENv
cHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzMCw4ICsx
MDMwLDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVS
TCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRh
dGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJP
T0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkp
Ci0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5k
bGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlm
IChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZp
bGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxl
KTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAK
aW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0
YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVI
YW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01
Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAg
ICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwg
JmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAg
cmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxs
eSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0
aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0
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
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNDMzZDllMWE0NWMyOTg4
NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNi4uZThiYzM5NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3
NmRkN2EzN2Q3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1
ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29y
a2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3Vy
cmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwg
bV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJy
ZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBt
X2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkg
eworICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
aW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MC4uMGJjZDk3NmVk
YTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxD
bGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRv
IGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHks
IFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNl
aXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAo
c3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYy
MzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNj
Yjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlw
dEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8g
ZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1h
bnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6
ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4g
YnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUw
MzMzODUwNTlmMzMxMDM2NC4uYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBi
b29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkg
JiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAppbmRleCBhOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyLi5kYjI2
YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00
NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAg
ICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRh
MGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4YTNjOGFmODBmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
Ojp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8K
IHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewot
ICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9p
bnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNm
NGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjU3N2Q2NTZlNjdmY2NhNDY0MDUw
YmZkMzRkYWRjMmEzNjI1ZTIzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZl
cjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1
ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVz
cG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKZGlm
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
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5k
ZXggZTY3ZTA1YmE4NDc4YTU4MTgzMGUzOTcwNjhiMzJmYjA4ZDkxYjdlZC4uZTY1YjJlYTgzOGIw
ODE4M2M5NmI4MzEyMGIxZmVmMTU2YmI4YzA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2
MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChz
dGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVl
c3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0
byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+
ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdf
bWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4
Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4OWI3MTg1ZTAzYmY4
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hh
cmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXpl
KCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVm
ZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uZTlj
ZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMzksMTggKzM5LDE5IEBAIGNs
YXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9
IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7
IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
Ci0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAg
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0
MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYjNhOTlhZjhmNTEyN2Y2YTY1
M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
c2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXpl
KSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAg
ICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3
MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4
NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApA
QCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBh
Z2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsK
IAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXpl
X3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXgg
Y2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlk
OTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxl
YXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2
ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAg
ICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURh
dGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdm
NGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uMzVlYTE2MjE1NmEyMDcwMjZk
ZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2OSw4ICs1Njks
NyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNl
aXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3Jp
YmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9u
dEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZh
bHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1
dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsK
ICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRl
MWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMy
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9H
KFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6
ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAg
cmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07
CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEy
OC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJv
b2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0
aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7
ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBS
ZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1h
cCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFl
MTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJl
YWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgog
ICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3Jh
cEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9z
aGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMu
LjY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3
IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAg
IGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewot
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxl
KSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVz
LnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3
ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29k
ZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3Ig
KHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EK
ICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2Rl
ciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3Jk
LnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAg
ICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0s
IFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBA
IHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01D
YWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAt
MTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVl
OwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0
YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3Rk
OjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRp
ZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVu
dGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29ucwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFy
ZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApAQCAtMzAzMSw3ICszMDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFi
dWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIo
KSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAh
YnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMs
NyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0
QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRi
YmI1NTM0MDJkZjFhMzNjNWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2
NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3Mg
QmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4g
ewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBk
ZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0
QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdh
MzFiYS4uNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAg
KzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2Vs
ZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigq
YnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxh
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRD
b2RlcnNXaW4uY3BwCmluZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRk
MTEuLjhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxh
dGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBp
ZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29k
ZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDVi
YWMxYTM0ZS4uYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5j
bG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBX
VEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMu
LmM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpD
X0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogfQogCkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xv
c2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9
IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAg
IHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVu
dChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCmluZGV4IDY0NDkxZTE2MmVjNmM1YmNmYTNmYzRjYjI0OWY4ZDljY2I2Mzli
MjEuLjFiOWI1NGI2MjcxODE0OTUwOGY5MDI3YzgzYzY3MzIwNmJhODI5ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAg
ZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25z
dCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2wo
U3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1
YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2Nh
MmQ4NjgxN2MyOTUyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wg
QXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYm
ICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBl
ciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBz
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRp
b24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggMDRjZmQwMjlhYzg0ODNhN2MzMjFiYTU0YjExODBjODZmYzRm
ZDc4YS4uM2U5MjNjZjY0OWQ5NmUzNGVkMmE1MWY5MTcwZDViMTc0MWZhNjUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjAwLDcg
KzE2MDAsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBw
SGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRl
eHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFk
b3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdo
dC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsK
KyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10g
aW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGln
aGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2Rl
bGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkg
aW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVl
c3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDo6WWVzXTsKQEAgLTIyMjMsNyArMjIyMyw3IEBAIC0gKHZvaWQpX3N0YXJ0SW1hZ2VBbmFs
eXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKIC0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZToo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAg
X3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1
ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSAoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBl
cnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2Uu
bnNVUkxSZXNwb25zZSgpLCBuaWwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIG5p
bCwgZXJyb3IubnNFcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
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
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTEwZGE2NmFiZjY0ODcyZjkxM2MxMzA1M2EyZWI3ZGI3
YTdmYzJjLi4xMWNjNzUyOGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEwNzQ2MmVlNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk4Myw3ICsy
OTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQ0NzcsNyArNDQ3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFu
ZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBh
c3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0Rh
dGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFy
Y2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTA4LDcgKzQ1
MDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2Vk
SW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0
YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU2MSw3
ICs0NTYxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGlu
Z0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVn
b3J5IHBhc3RlQWNjCiAgICAgaGlkZURPTVBhc3RlTWVudVdpdGhSZXN1bHQoV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRh
dGEgPSBbcGFzdGVib2FyZEZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkpIGRh
dGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07
Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAg
ICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShwYXN0ZWJv
YXJkTmFtZUZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkpKTsKICAgICAgICAg
Y29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2Vz
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNDAwMGE2YjcxOTEzNWMzNDNiNGNkMDljMDIzYTY4
ZjJjNWU3ODVlLi5lYWY1ZWVhOTgyM2NjNGYyNTllYWQzZTA3ZDA5MDgzMWQ5ZDNmOWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTMzNSwxMCArMzM1LDEwIEBAIERvd25sb2FkUHJveHkmIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShkYXRh
U3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRp
bmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2Uo
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFJlc291cmNlKHBh
Z2VJRCwgc2Vzc2lvbklELCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlKHJlcXVlc3Qu
aHR0cEJvZHkoKSkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGVycm9y
KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDg2ZjFiMzA0NGZjODc5ZDA5M2ZlZTk2Y2Vh
NmViMTBhNTM4NzY2MzQuLjcwYjU3YjU0NDUzOTI2NTNiNDI2YWQ3ODhmYjExMjI1Yjc5MmFkOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwpAQCAtMTIzLDcgKzEy
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVE
b3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJv
eHkqIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7
CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAgICAgdm9p
ZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVk
U2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMTk1YzNjODIyMDg4YTc3YmI5ZGYx
Njc4NTAxMGY0MTU2YzZjYzY2MS4uZWQ5ZDgzMzdmNDc0Zjc3OGVmNzZiMTk0YzY5MjBhMTE4NGYy
YTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY5LDcgKzQ2OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGlj
eSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9y
c1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
RHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5NmM5NTk1NWZhZWZhNzMwOWMx
YTBjYTIwMmVlMmYxZGI2MWViNmM1Li4yYWNkOTEzNTBhZjUzZDY3Zjc5YzMwNTJjYjJhMDJiNzFj
MDA5MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYz
ODIsNyArNjM4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvCiAgICAgZG93bmxvYWQuc2V0
RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291
cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5yZXF1
ZXN0UmVzb3VyY2UoaWRlbnRpZmllcigpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBkYTA0M2YwZGFhMjU1YzlhZWQzMDFhMDA0NDAyYjZhMDI3NDYzMWRk
Li5mNmM3YTljOWMwZDA0N2I4ZmE4OGUzNjRjMmYzZWE1Yzk1N2M5M2FlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNp
emU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFz
cyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJ
bmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFr
ZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0
UmVzcG9uZGVyKCk7CiAKQEAgLTEzNzUsNyArMTM3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CiAgICAgdm9pZCByZXN1bWVEb3du
bG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwogICAgIHZvaWQgZG93bmxv
YWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxp
bmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1
MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3
ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAg
ICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgp
IH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1f
c3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCAzYjA0YTgzM2RiZTBiNmI2NmVlMTRkM2MzMDBmMzA2ODcx
OGJmMmNmLi41YzhlM2I5MmYwODk5MmVmNGRhZDYyYjE3N2E4MmYzMTYwOGJiYjI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg4
LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KaW5kZXggZmFjOWU3ZmI3OGJlZTBmNjI5NDU2NzJlM2JiNzRiOWUwNTIwZTMwZi4uYjY4
NGUxYzk0ZWFjYjY3MjhiYjEzMDY4Y2I2OTUyMjcwMWZhOGY4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNh
dmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9
IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZl
ZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDEyZjNhMTVhNDNiOGFjNGQxNTFmZjMwM2MzYzVmNzdkMTM1MzBjYmUuLjk5YWVk
MDM2ODhlMGU1YzYxNzQ3OTBmZGRkOGQyNTBlOWFiNzBhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
Mzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VM
KWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0
b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGlj
ZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0
YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7
CiAgICAgICAgIH0KQEAgLTY2NTAsNyArNjY1MCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9h
cmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QK
ICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVy
KQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NjIzLDcgKzc2MjMsNyBAQCAtICh2b2lk
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2Ui
LCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3
aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRh
dGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGlu
UmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmll
d10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkZDgyOTUzYjkwZjRmMTNiZGI4Y2E3
NmM0MjhkMGMwNzJjMGM1ZGI5Li43YThmYWNkMzE3YTA2Mzk2ZDYzYjhkZWVjNjU3MWU1NTEzZWM0
OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGU0NDI3ZTJj
MjBkZjFlYWNhYTQxZDAyMzU3ZTg3ZmIzYWVjMTcwZWUuLmNhNmI4NzNiMWM4M2Y1YTUwN2I4NWVh
MGZmMzFjZWRhZGQxYWFiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6
OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZi
NDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0
OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
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
bnRyb2xsZXIubW0KaW5kZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2Ey
OC4uZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVk
aXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRp
dGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdl
dCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxl
ciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxl
KHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsCisgICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lk
KV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdh
dGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJv
bGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVy
KFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChO
U1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBl
bmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAg
ICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgx
MWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9h
cmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBu
dWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAg
ICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAg
ICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigp
KSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0t
PmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwog
ICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmgKaW5kZXggMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUx
YzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5h
bWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3Jt
VHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmEzNGUyMTJkMDdhZjJm
ZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwg
Y29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYo
KTsKKyAgICBzdGF0aWNfY2FzdDxjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlCiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZm
ZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1
ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwg
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsK
KyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50Lndp
bGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0
YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBs
KCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4
OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdl
YkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVm
ZDQ0MzAuLjk4YTZlMmU3YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRlMDUwOTQwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFy
ZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAl
cyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhi
N2ZmLi44NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsg
cHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50
ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVm
ZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5j
b2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkZjI3OGE3ODg0YmFj
ODlkNWQxNWY3ZGM2NDlkNjZkODA1MDRjMWY0Li5hMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJiZjhm
OWYxMDUyNWQ4Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmRE
YXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0YzQ4ODk3NjAxMjJhZjc2ZjAzYjgwYzRm
ODY2MmExMjNmNGQ5MTdlLi5lMTZiMGNmMzgxODA2MTEwZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0
ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2Zi
YzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2
ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4
OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwor
ICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAg
ICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDYwYzIwN2VkMGVlYTgzNmI0ODcwZGRhN2M2
YmIzMGExNDU0Y2E0OTcuLjRjNjY2ZGQ0MGQ1ZTlkNDUxYTFlMDZjMTFmZDA4MDAyN2E5OGIyYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4K
ICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJp
ZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShv
dmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBw
cm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpA
QCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAog
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6
b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBw
YXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpS
ZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAy
MDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJhZTBhNjk0ODMxYjkzNmUwLi4wNDVkNGNiODlhOTY2NGEw
OGUxYjgxYTA1MzAzNWRjNWQ5ZDBjNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50
IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmlu
Zz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02
Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRf
dCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4
LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
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
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZTQ2N2VmZmZk
Nzk0N2I3OGE0YjgwNzBkNDg4OGIwNmFmOGViN2RjNS4uMzlhYjc0OGUxMjY2ZDU5YjdjNjIwYTc3
YzMzOTgzOWVkMTIxODE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQx
ZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3
YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICop
ZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSBy
YXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRh
KCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRh
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmlu
ZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1
ODEzOWYzMDgyNThkOTNmZjMuLmM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIx
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01Q
YXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRG
b3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1
NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEy
NWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQy
LgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdl
YktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFkODFmZmExOWQ5N2Yw
NGVjN2NjNTc1YjNlY2U1ZTg4ODE0NDBiMzkuLmUzNTFlYTk5OGMwN2U0YjMwNDZmYzkwZDI2NDVm
YWIzZTZkMGQ4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5k
aWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25z
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
ZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGlu
dDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE4
OGVjNTAwNDUwNzdkNzhiMDEyMGE2ZGFmYmIwNGZiNzkyNzY0NjQuLmEzZTNjOTMxNjhkODkzNjUw
MmFhNmU3ZjQ1NGU0ZTU3ZWQxYjEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
YnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBl
KTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRl
eCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2Jl
OGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNE
YXRhICopZGF0YQogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPily
ZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdh
ODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2
ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChb
c2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hh
cmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9j
dW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRB
cmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJz
ZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5h
dXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJi
YjU1YTk5MS4uNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQx
LDcgKzM1NDEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0
ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSku
Z2V0KCldOworICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0K
IAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGIw
OGMxZDIxY2Y5ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5MGU3ZmE1
N2RhZDk4OTFkNDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhD
b2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRl
LT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisg
ICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5T
U3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9
IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlm
IChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAg
ICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29k
aW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNv
dXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNl
KCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0
YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRF
bmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U1VSTCAqKVVSTApAQCAtMzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVl
CiAgICAgICAgIGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAK
ICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNv
ZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3Jl
RGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDAp
OworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0
ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFk
NDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1
OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVt
b3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIp
OwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBh
NWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNm
YWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgK
QEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3Ry
ZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01Q
dHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8g
SVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9z
IHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3
OTM4MTc2MmE5Li5jNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhS
RVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0p
CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5
MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0
NGU0ZGFiMWI3YmRhNTQxZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4MDliYTY5
N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2Vz
KCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4
YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVl
MWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NP
TV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAg
ICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFt
KTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0K
IAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRf
IElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEz
ZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVz
b3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJS
ZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0
cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFu
Y2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmlu
ZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4
MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6
IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSog
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NmE4ZGJiODNiNzIyNjQ0ZGM2ZjAy
ZWEzNWYyNTkwMTdhYjljNmJmLi45MzBkNTkwY2Q0ZjJjNDBkYzhmOTE0ZDVjMGExMDQxMDMxYjgy
M2M3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJk
YXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIG5ldyBzY3JlZW4gYW5kIHdpbmRvdyBjYXB0
dXJlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdj
YTQ2OC4uYmFhZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1NmJkNGYwNTIyYzIwMCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTQzLDM4ICs0Myw0MCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFy
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
aXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+
Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODMsMTIgKzg1
LDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGln
dW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250
aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwg
MSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZl
ci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEo
KVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsK
KyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsNyArOTksNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0
YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hh
ciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CkBAIC0xMTEsNyAr
MTE0LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFy
Z2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IwKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcjApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3Rv
cjEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwpAQCAtMTUxLDE1ICsxNTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwg
bnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5h
ciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFi
aXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRo
YW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAgQVNTRVJUX0VR
KGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOworICAgIGF1dG8gY2xvbmUgPSBzaGFy
ZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUo
KSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAg
LTE3NSwzMCArMTc4LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsn
YScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywg
J2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9
OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVE
YXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
Z2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNv
bWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAg
YXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamts
ID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwor
ICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5z
aXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJn
aCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAg
IGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihp
amtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0
YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVm
ZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0
YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEo
KSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXpl
KCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXND
aGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0K
IApAQCAtMjEwLDE1ICsyMTYsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxU
bykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7
eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwg
YnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsn
YScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2In
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsn
YSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYics
ICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdj
JywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9
IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjEx
MC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446874</attachid>
            <date>2021-12-11 05:12:04 -0800</date>
            <delta_ts>2021-12-11 05:39:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211212001201.patch</filename>
            <type>text/plain</type>
            <size>448423</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uZjMwNzYxNjgyMDI2NmI3YmI3NzA4NmExMTY2Yjhk
MzY4Y2MyYTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29yIG9uIEF1
ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1MzhmNjk0
YzE0NTlhYWU0M2I3MTI4YmMxLi41NjdmNmQ0YjU3M2JkZWM2ODA2ODhhNjQ3M2ZjNzZkZTY5N2Vl
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
ZFJlYWREYXRhVVJMKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6
ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
YXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rp
b25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMTEgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCB0cmFj
a0NvbmZpZ3VyYXRpb24gYWNjZXNzb3Igb24gQXVkaW9UcmFjayAmIFZpZGVvVHJhY2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBmOTc5NzgwODZmOGZiYmY4ZjBhNjQ5NzA0ODIx
MGI1ZTczZmRhYy4uZWZmYmM0YmYwM2FmYjJmNjk0N2VjYTkwYmM0OTMwMzViZTk0NmI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0xMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTczCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzk0N2ViYTIyYTI1N2M5YmQ4NGE5ZmI2NmMx
YTI0ODY2YzliMjFiNi4uM2ExOTE2NjMxNzcyMGY3MjNlYjRkNjBjZjVlNmRiYjI4MzQ2ZDZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6Cisg
ICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAg
KiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuaDoKKwogMjAyMS0xMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGEgYERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnlgIHRvIGNvbnRyb2wgd2hpY2gg
cGFzdGVib2FyZCB0aGUgV2ViUHJvY2VzcyBpcyBncmFudGVkIGFjY2VzcyB0byB3aGVuIHBhc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRm
YWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5kZmFjM2E5NTQwN2YyYjM3M2FhODhkZmUzNzA3ZjJiOWJl
ZWFhZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmgKaW5kZXggMmI2MjYyODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uOWI1
OWViNWNjNDk1N2YwMzM2Njc1ODJlODY1M2FjMDc0ZmU4ZjM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
Ym9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjlj
OTA3OC4uNjliYzNkM2EwM2NlNDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsy
MTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRh
KCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYg
ISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0
cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAg
ICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
ZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9t
RGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyAr
MjQ5LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5p
c051bGwoKSkKICAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlm
IChhdXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQot
ICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkg
fTsKKyAgICAgICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tl
Q29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6
ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAg
ICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1
ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAg
ICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAt
Mjc4LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYg
KG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlclRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKQorICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nh
bml0aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYs
NyArMjk2LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9h
dFBvaW50Ojp6ZXJvKCkpOwotICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdlL3BuZyJfcykpIH07CisgICAgICAgIG1fZGF0YSA9
IHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImlt
YWdlL3BuZyJfcykpIH07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0OTVjNTMwY2Q3N2Q1NGY5
OWE1MjlhNy4uMmRjOWQ1MDBmMjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEzMTEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsMTEgKzM0
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2Fk
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcg
PSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVm
ZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVS
ZWFkZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9h
ZGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBl
TG9hZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4u
MjkzZjUyMzBkMGQ3NzEyM2RiMTMwYjAxNjkzNjk5ZmJhZmY1NGFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMTU3
YzVmNTJjMDI2YmZhYTk3NjRlY2QyNTA0MjNiMTVkMTg2MzNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3
OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAg
ICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNp
emUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0
MjRjLi42ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICszMDEsMTMgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
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
cmVzdWx0KSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAg
ICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAg
ICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAg
dGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0
ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYz
NTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAg
IHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVm
PEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRi
NDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlh
OGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNv
bGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgp
OwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNl
Qm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
YXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNh
Y2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkK
IHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNv
cHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBS
ZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEy
YTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQx
MjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNl
cHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVl
cnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5
SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25z
ZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JF
X0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQx
YTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3Qg
U2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDog
a2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
ICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZm
YjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5z
aXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6
aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpv
cHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0
cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2
NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQw
NWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBm
b3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3Vt
ZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCks
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNp
emUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtl
IHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkK
ICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwog
ICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBG
b3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCAr
Mjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRC
b2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVu
Y29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5n
KCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2Rh
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
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4
NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3OGFlODc1ZGMy
NTYzZWJjYjJhNzg4ODVkMzBiYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
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
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNl
OTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4
ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlm
ZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4
NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
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
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
cm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNm
NDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmY1YmYyYjcyNmU2YWU5Njg5MzUzYzBhN2Uw
OGI0NWVmZGE1ZDkwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIs
NyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9y
RmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI4MzFjZDNmYTljNmE0ZjlmZjlhOWEw
ZTI1YzNiNDJlNTJkMWI2NGQuLmNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAxZjE3NGY3
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFBy
b21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBh
ZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRp
dGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxE
YXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjAzMTM2ZmZjZjFmNmIz
N2U2YjA3YWI2MjMyZTYxZjY2ZGVlNzU4Ny4uOGRhOWZjYzY0MTZiNjcyMTdkMTc0OWViYjg5Nzgw
N2U0NzYxMTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3Np
dGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0
b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247
CkBAIC01MzgsNyArNTM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5
RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTc1LDcgKzU3Niw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlz
ZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRh
KTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYyMywxMiArNjI0
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
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2Iw
MTUuLjFkOTdhY2QzY2M3OTE2MWIwYWM1MGM0YmY3MGNiMTUyZmMwZjQ4NGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03OCwxMCArNzgsMTAgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIH07CiAKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhl
NGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjc0ZmU4Mjg3ZThjMzkzYmUxN2E2NzY2NTM4ZDlmMzRh
MDkwYjMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQog
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsK
IH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUo
Y29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFj
dERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNj
MDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li5lN2EwNzFjYTQwMzllMDFmNDhkMGI0OTk1MDFl
ZDY0ZGU2MjZmMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmlu
ZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2
NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpw
bGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0
cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsK
IH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3Ry
aW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0
dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBl
cnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRT
dHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0
cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0
cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rv
cjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShl
bGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBF
ZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0
YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
b3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBv
dXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiAr
MTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0
YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2Vi
Q29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1f
ZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAv
LyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIg
YWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNp
YmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3Ry
aW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZE
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1d
KTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAg
TlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhm
ODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1
YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0
YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAg
ICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsK
ICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAg
ICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7
Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRG
aWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRM
b2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBp
ZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNv
dXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCku
c3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxl
bmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBA
IC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVX
cmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAg
ICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVu
ZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5
YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjQ0MDU5YmU1YWU5ZTgxZGEzOWQ2Mjg5MjAxZDhl
ZDQ5MTU5NzM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAg
ICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsK
IApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhB
dHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZh
bHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVu
dC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0
YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNo
bWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5h
bWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQog
CiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxl
bWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJm
aWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1v
dmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5k
YXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0
MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hp
dmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25z
dCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hp
dmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAo
IWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
KyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNl
Tm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRB
cmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAg
IGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50
ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFu
ZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAg
IGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBk
ZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2Fi
bGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGlj
IFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJ
bkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVp
cmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQog
Ci1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2
LDcgKzYyNiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3
ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFt
ZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAzMDM2
Y2QzMmQ2Y2Q4MzJjMjIwMjgzYTg0NDVhODk5YTVhNjZjYTNjLi5kZjA5MTlmNzVhY2Y3OWE4Mzky
ODMyMTE5MGM1Y2IyYmFmNzQ3ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtQ29weUZvbnQo
KQogICAgIFBhc3RlYm9hcmRCdWZmZXIgcGFzdGVib2FyZEJ1ZmZlcjsKICAgICBwYXN0ZWJvYXJk
QnVmZmVyLmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcGFzdGVib2FyZEJ1ZmZlci50eXBlID0gbGVnYWN5Rm9udFBhc3RlYm9h
cmRUeXBlKCk7Ci0gICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CiAgICAgcGFzdGVib2FyZC53
cml0ZShwYXN0ZWJvYXJkQnVmZmVyKTsKIH0KIApAQCAtMjUwLDE1ICsyNTAsMTUgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFy
Y2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShp
bWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlz
IGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJL
aXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5k
ZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5
ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBp
bnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmlu
ZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJv
Y2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBG
VFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQor
c3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9h
ZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9j
dW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1
bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5n
cygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBs
YXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3Jpbmcg
dGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRo
ZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwg
c3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZU
UCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVm
ZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250
ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRl
NDczMTg3OTViYWJhZjg1MmMyMzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYy
NjIzYzM3ZWNiYTdjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEy
IEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNv
ZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5n
TmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2Rl
ZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNh
ZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4
OTdmODE2N2EzMmJlMjM3MzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBA
IGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAs
IHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3
aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1
M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1
MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNv
dXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdh
MWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQ
cmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIu
cmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBs
b2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0Ns
aWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4
IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAx
OGQ5MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJj
aGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8m
IG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2Vk
QXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVE
YXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVy
LnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2Zy
YW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0
YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNl
ZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJj
ZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1
bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3Bh
cnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJh
bWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRh
KCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmlu
ZGV4IDUxMjI3Yjk2ZDdkMTdjYTA3ZWUzYjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZiZDMyZmMyZWNm
NDZhZjdjZDkzNzlhOWQwMGM5OTExNmViN2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJh
bWU7CkBAIC0yMzUsNyArMjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRy
PEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNo
aXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICNlbmRpZgpAQCAtNjEyLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQ
dHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2Vk
QXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2Vk
QXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0Ns
aWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5ZmMwYTUzM2Rk
YjQ3OTNhNGIuLjA3NmYzN2RlMzI1OWEwM2MzODdhMWUwZDJhZmNhZWQyZDgyNTliMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGlt
aW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGZlMzJkOTRl
NDI4NjU5ZDVkNjFkYWJhNzIxOThlYjE5NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTliZDQ3YTdjYmJk
OGM4MzE3MzRjNGJiMTAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7
IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0g
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYp
IGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jl
c3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDZjNWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThh
OWViOGRhM2NlNmI0NGZhZDJiYzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RS
ZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAg
ICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBv
bGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICsz
MTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3
UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBu
ZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3Vy
Y2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAg
ICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZj
NDZjYWUwMjBlMmYzYWMuLjljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNz
IENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
T01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpA
QCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNs
YXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBj
b25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1h
cCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9j
YXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVm
ZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51
bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVu
dCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0g
c3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3
ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBT
aGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEg
PSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKICAgICAKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+
YXBwZW5kKCpidWZmZXIpOwpAQCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2lu
ZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1f
ZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0
NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYx
LDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJj
ZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5
MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRv
IG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwg
bV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAg
IC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1Qi
IHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4K
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFO
SUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNh
YWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1z
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8g
bm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBj
YWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9k
aWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQog
Ci1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFw
cGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAg
ICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJj
ZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBv
ciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0
aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRo
ZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3Vy
Y2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsK
ICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3Qs
IHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBj
b3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4
ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBj
bGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAg
Ym9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdj
M2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMw
ZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVD
b21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hl
PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkK
ICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgx
KTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0
ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRk
ZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNh
biBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVm
CiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNv
dXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlz
dFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVz
cG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewog
ICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlz
dFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAg
ICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsy
MTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0
eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJl
c291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZH
ZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkp
IHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJj
ZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRl
IGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25z
ZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NG
UHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewog
I2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENG
RGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3Qu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJv
b2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURp
Y3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRp
Y3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNo
aXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQog
ICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhw
ZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwog
ICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAg
IGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAg
ICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2
MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVS
TCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZl
IGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0
NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkK
ICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJh
bWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAg
IC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQg
b2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJv
cmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwi
OTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3
ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29k
ZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsK
KyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1M
IHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3
IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2Rpbmcg
Zm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBh
dXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVy
IGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAv
LyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3gg
KFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcAppbmRleCA0ZjIyOGU4ZDAzODliOGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1YmQyLi44NGFh
NzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChk
YXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUw
MTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDEx
ICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUg
dGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0
IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVu
bGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVn
ZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZi
MzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6
ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBA
IFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiti
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9y
T2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBw
aW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0
ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikg
OiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRG
b250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRM
b2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5k
ZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYw
OTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxs
TmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQog
CiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9t
Q3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9u
JiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwog
CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZv
cm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBi
b29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3Vz
dG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUw
MTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1
NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdl
KCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVy
JiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3Jl
YXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hv
dWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJ
bWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQ
b3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
KS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJl
ZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9z
dFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRl
NjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQy
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUs
NyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVw
ZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQw
OTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4
Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGls
ZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0
byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkg
eworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgyMDAwMTE0YTcyYTNlMmEwMTBlNzgxMDg4Li5kZmJh
NzYxY2IwNTg2NGY1NDI0NTIzYmEzN2NkNTVjNjAwNWRlZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkxNSw3ICs5MTUsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYg
bmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7
CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1
ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3
OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBA
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
OS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3
IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2Rv
Y3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25z
ZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9j
dW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIz
NDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4
YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwog
Ci0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7
CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0K
IApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRT
VkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2Nv
bnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQu
dmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYx
M2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYw
NTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJ
bml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRG
b250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZH
Rm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29u
c3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IDU0ZTY3NmNlNTBiMDk2YjU2MDdjM2MwMzBmN2Q5YWNjMDVj
NGZhODguLmI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwx
MyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNj
cmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWVi
NGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJh
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3
MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAg
KzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAK
IHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0
YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0g
ICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgx
YzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0
MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBm
b3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1
ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2Vk
U2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9u
c2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25p
dG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAg
ICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhj
YWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9
CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJl
ZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZm
ZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYg
KCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDE4MTc1MzFjYjY5
OGI4YTRlZGEyODEwY2M0NjZjODE2OWNiMTYzZWIuLmNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0
NWI5OGJhODRhNzFkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzQ2F0
ZWdvcnkgOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05OCw3ICs5OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggOTdlMDFiNWM2OTc2ZDY3ZjBmM2JkZmNlZGVjNmFiY2YwNDg1MmM0
NC4uN2I5NjFkYjA0MDRjMWQxOTczNjA3NGU0YTlkNmMxZGM5NDIxMjI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xOTczLDcgKzE5NzMsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2
NGY3NzA4MmM0N2Q2N2YyNjNlZDVkZjk1OC4uNTk2YWZiOGU5MTg4OGMyYWE2NzJmYzBlNWQwNmNi
NjQ0OWRlZGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0
dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUo
KSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxNDc2
NDFkZGI2NTg4NWUzOWE4M2M2YTQ1NTU2YjFlYWE2YjM2NWY3Li40ZTI3ODJkOWJhY2I5ZDAxOWQx
MjAwMjBkZmYwMTE2ZTI1MjMyZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
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
CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTE0Myw3ICsxNDQsNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEJ1ZmZlciB7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAjZW5kaWYKICAgICBT
dHJpbmcgdHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogLy8gRm9yIHJlYWRpbmcgZnJvbSB0
aGUgcGFzdGVib2FyZC4KQEAgLTE2NCwxMCArMTY1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChD
b250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlw
ZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMzA4LDcgKzMwOSw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0
ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAg
ICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQpAQCAtMzQwLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4m
IHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUy
Yjk4OTUyY2NmNjdhZTcwLi4yMGNkNjFlNzExMjEzMjFjYzQ2ZDA3NzE5OTFhYWM1YWE0NzU1ODAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEo
Y29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0
YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNv
cHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIp
IH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
b3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3Ro
ZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJl
dHVybiB7IH07CiB9CkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAt
ODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVu
Y29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9y
ZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAt
MTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlw
ZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwx
NCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5
LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50
cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09y
QnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAor
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0
YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAg
ICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8
U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnku
dHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3
ZTZhYmMwMy4uYzZjYmM3OTBjN2UwNWYzMTQ4MjA1ZmM1YTFjYzVhNDY4M2M2ZDYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURh
dGEgewogcHVibGljOgpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5n
IHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAg
LTYwLDE2ICs2MCwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
Jik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQg
d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYm
KSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9y
bVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4m
JikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJv
b2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAppbmRleCBlNzc5ZGFlYWU2NTk1MzQxOGQ5MGMxNzUwMTJkNThmYjk2OGE1MDBj
Li45YjFkNGI5NWVkZmJkZmEwNTk1NmEzOTkwNzFhYjlmZDkxODNiOTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGlu
dDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
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
ZXggZWI0MWE2OGNjNWFmOTIyZTg4MmVjMjY4ZWRiMmU5OTA1ZjQzYzI0NC4uNTI3MGM1OTg0MzU1
MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODUs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05Myw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVS
TChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdl
ZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4
LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0
b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMz
Nzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmVhYzg0MTgzY2EzZDlhNDY0ODc4YzZj
NDhmY2UwMjIwYWRkNDc5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRh
dGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwor
fQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHBy
b3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBt
YXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVk
QnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0
b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhp
cyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxs
IGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkg
YXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMp
CisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVm
KCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21l
bnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0g
ICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRh
KCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEu
bV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEu
bV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAg
ICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6
ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3Nl
Z21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1l
bnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBj
bG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24s
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAg
ICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBT
aGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9
IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17
Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQg
PT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6Omlu
dGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigK
LSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0
IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBD
RkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0g
ICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0
YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3Qg
dWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNv
bnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAg
ICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVE
YXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBi
b29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4IEBAIGJv
b2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
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+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiB7IHsg
ZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1RvRml0KCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwor
fQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHTElCKQor
UmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdtZW50PiBE
YXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
K30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRh
U2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29uc3QgdWlu
dDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNFKENGKQor
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNlbmRpZgor
I2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5
dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShH
U1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRp
ZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEu
ZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNl
Z21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJs
ZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1
dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1
LDcgKzUzOCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3Np
dGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9z
ZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChw
b3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdt
ZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU1MiwxNiBA
QCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBb
c2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3Rl
cnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3
ICs1ODcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3
N2IyZTZjNDU0OTE4MzkzNjhhZC4uN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZlOTk4OTdi
ODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NiAr
NjIsMTM4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwog
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRh
KCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAg
dm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3Jl
YXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxs
aW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRv
IG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhl
IHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6
IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3
aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4g
Y29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNp
emUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAg
ICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248
c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hy
aW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAg
ICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXIm
JiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHBy
b3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRl
ciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVy
KSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
c3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Cisg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0
YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50
KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAor
ICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZv
ciBjcmVhdGVDRkRhdGEKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90
PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
ICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFz
aXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGln
dW91czsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVh
Y2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYp
PiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQg
PSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIx
MCw1NSArMjAyLDEwMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBW
ZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigp
OyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25z
dDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLnNp
emUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlz
IHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hl
eFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wg
bV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
cigpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVz
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwog
I2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUg
eyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2
YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQg
cmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSog
Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUg
RGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
bXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8g
QSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRv
IGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBt
ZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZm
ZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRp
YyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAg
ZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAo
c3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRo
YXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJl
Y3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFz
c2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChB
cmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1h
eVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
cmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVf
RVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAg
IGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NiwyMyArMzA1LDI0IEBAIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7
CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6
ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6
ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAg
IGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uM2Y3ZmJh
NDFhNGExZWZiMTFjY2RmZmQ1NzI2NzhjZGZmZTUzZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0K
IAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURh
dGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEy
NzFlMWI4YjllMTQuLmEwMzljMjUyNWVkNWZlNjM1MGNjYjBhMWFhMzY1MGQzMTk4NmY2MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFs
IDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBm
aW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZv
aWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0
IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
YmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYy
NTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQ
bGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkg
ewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdl
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJp
bmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45
YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBA
QCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92
ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlz
aEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0
eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0
KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJi
MTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzli
ZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0Yo
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3
NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1
YjNkZDU5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCkBAIC00MSwxNyArNDEsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3Jl
IGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1
c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04p
Ci1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYg
KGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lm
PFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBm
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRC
eXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhl
MjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwx
MSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGlj
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYg
dHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmlu
ZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0N2I4Y2M0
YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAK
ICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVm
ZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRl
Z2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3Np
dGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CkBAIC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoTlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0
YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVu
ZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0
KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNl
Z21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1sw
XS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYg
KGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQ
YXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VE
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBAIFJldGFp
blB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAg
ICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVh
dGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1
ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXpl
OnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVh
ZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+
IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04s
IHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBi
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRl
eCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGExZmVhYjVk
ZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAo
aW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5z
aXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0g
MDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgh
a2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0
NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQg
aXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAv
LyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhl
IGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNv
bnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkp
OworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdp
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
aGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRkNDdmOTY0MDAyYjNhOTA2
YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJlYWQwMTUyMjFjMDI0ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmco
Y29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBoZXgocGFyYW1ldGVy
cy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRp
b25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4yLjEuMSBTZXF1ZW5jZSBwYXJhbWV0
ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcgQEAgU3RyaW5nIGNyZWF0ZUhFVkND
b2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTU6MjAxNAogICAgIC8vIDguMy4z
LjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3JkCkBAIC00MzYsNyArNDM2LDcgQEAg
c3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29y
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRl
cnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSBEb1ZpIENv
bmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAiRG9sYnkgVmlzaW9uIFN0cmVhbXMg
V2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9ybWF0LCBWZXJzaW9uIDIu
MCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
aAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIzMzFkMzlkZGRhMjdhLi5lZGZlY2Iy
NmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC0zMSw4ICszMSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBBVkNQYXJhbWV0ZXJz
IHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZD
UGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZp
Z3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJik7CiAK
IHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBIRVZDUGFy
YW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0
ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25m
aWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CkBA
IC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0
ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNl
RG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
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
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDE2MTFiYWFjNDM3MGI1ZmM5
OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlkZmFlODllNjViMmFiM2FmNDg5MTQw
NzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRp
bGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNj
cmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAg
ICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkpOwog
ICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVy
biAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7
CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJh
dmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRp
b24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2
YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Ft
cGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZDLCBjb25maWd1
cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKICAgICAg
ICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFN0cmluZyBjb2Rl
Y0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZT
VFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25S
ZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRp
b25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJh
YTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3
MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQs
NyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qg
b2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAg
IHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDks
MTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0
aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0g
aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBp
bml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAo
aW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQot
ICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZ
U1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IElu
aXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0g
YmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmpl
Y3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0
aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Np
b25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsK
ICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0
byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJl
bW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4
OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXls
b2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBh
eWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEs
NyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYn
IGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQ
QUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRo
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3
Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3Bv
bnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5
U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNl
c3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdF
eHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgp
IHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9u
SUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGly
ZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEw
ODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlE
cyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkp
IHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWlu
Z0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJ
ZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250
ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVy
cm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRy
KGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwog
ICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRl
KCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpw
YWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVj
dCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAg
ICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVu
dHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEo
KSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBr
ZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwg
YmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5s
ZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8
UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlE
ID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50
SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtl
eUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsK
ICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQp
LCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0
OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURz
ID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAw
Njk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0
NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNv
dXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBt
X2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRl
UkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9h
c3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1
ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBb
QCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6
ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCAxYTQz
YzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4MWU1ZjNjMWVhNTBlNDIy
ZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZm
ZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5k
RmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRh
Om5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2Nv
bnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFi
YmY3MmE2ZjI0N2YwLi4zMmM1YTY2OGExNmFlNDhlZWU4YzlkMzhkYmZmMTMzMDVmZGFjMGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCkBAIC0yMTQsOSArMjE0LDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmxvYWRGaW5pc2hlZCgpCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
CiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMzgsNyArMjM3LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlm
IChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0
YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVz
dWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMw
OWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0
IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwog
fTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNl
NDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFy
eVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0
UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90
IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAg
IHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBA
IEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7
CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJI
aW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0
aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRl
ZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNl
IFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBn
ZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBs
b29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3Jh
cCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3Vz
RGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5y
ZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRo
ZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAg
Ly8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBh
bmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVp
cmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRh
UHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwg
ZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRh
dGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCks
IGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdj
MDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEy
NDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBA
QCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3Jl
YXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkz
YzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29u
c3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJk
NjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7
Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1
OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRl
ZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+
IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJl
dHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxl
LCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5
cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBm
MjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEy
OSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xp
YnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJy
YXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJy
YXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQw
ZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0
Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2Vs
ZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
Q2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsK
ICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpA
QCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRh
YmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAog
I2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcAppbmRleCBjZGVkNGE2MGI1MGJiYmFlYTViODQ1YmRlZmJiNjg2ZmUyNTI1
OTMzLi5iNzQ5ZmMxNThkZmFiZWZkM2JkOGM0NTQ5OGJhMGE1YjI5M2JmNDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDI0LDkgKzQyNCw5IEBAIFZlY3Rvcjx1aW50OF90PiBH
c3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgp
LCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFw
cGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShj
b25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGQ4MmNkM2UxOGVj
ZTA0NzYxZDZhZDRlYzJkNTJlMmFkOWRjMzg0NjguLjJiNjA1OTIzOWJiN2YwZDhmYmU0NTYwMjZl
NTgyYTNmYzZmMDljMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtp
dEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQog
ewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAg
IH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0
ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIy
N2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIy
NjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwg
c2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIg
PSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRh
LCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5
cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggY2JiNDlkMTczNjJmNzEyZDI1ZGZlODI0ZGZjMWMzODFhNWRhMDI5My4u
M2EyMDE1NzgwMTQ4ODEwYWNlNTRkZjdiMDhlNGRmN2ZkNTIzN2Q2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NjksNyArMzY2OSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVs
aW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1Iiwg
aW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAg
ICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5p
dCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxv
YWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1Rf
TUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlu
aXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXRE
YXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTcz
Yzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMy
NzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7
IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0
RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBj
b25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9y
KiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNl
Q29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVz
ZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBp
ZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBz
c2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAg
IH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3Vw
UGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2Vy
IG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFy
a3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJz
ZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3Zl
KHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBh
eWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFw
YXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0
MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMy
YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92
ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5
bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lz
dGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZh
MTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNl
NmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRh
KGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFu
dCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJk
My4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9S
VCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMw
YzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWEx
ZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAg
IGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAg
c3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRl
bmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6
QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
cGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZh
bmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhl
cmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkK
QEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVC
YXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
aV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlw
aEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4o
YnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMg
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5
cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVj
dGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0
cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBj
b3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFs
R2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhD
b25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZv
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAg
Y29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1h
dGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5
cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRk
NDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1
OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNz
IE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRI
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQog
ICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMw
NDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
LmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWlu
dDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1
aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVp
bnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4g
MDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFi
bGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNh
dXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNh
c3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29u
c3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQ
dHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zm
c2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDog
Q292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVX
aXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSog
Y292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAg
ICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90
JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+
Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1
OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0
ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1l
IHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0
YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5h
bWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBv
biBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9u
dERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVu
Rm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXpl
KCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
c2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRo
ZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZv
bnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRl
bkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2Fl
YTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3
OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVt
b3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFt
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+
Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYp
OworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNm
YTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5
Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZm
ZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJT
dWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1
Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFi
bGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsg
dGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRl
cm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3
ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNb
MV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9v
a3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAg
ICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zm
c2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlw
aFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwg
R2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3
ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBA
QCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkg
PSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykK
QEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZl
YXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVj
dCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFu
Z1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5
c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAg
IH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
c2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2Nv
dW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVm
YXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBT
Y3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50
OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291
bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3Jp
cHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3Jp
cHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJs
ZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RP
ZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4o
YnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlw
dExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxp
c3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCog
bG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNl
dCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIp
OwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5
cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVu
VHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZl
cik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlv
bnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVy
dGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEht
dHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50
MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1
dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcp
OwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRh
dGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBU
aGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxv
dy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVh
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYs
NyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAg
ICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFi
bGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAg
Z3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwg
KmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNh
N2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2Vm
ZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
MTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAg
IHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewog
ICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBm
b250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVk
YjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0
cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdn
ZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwog
fTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTcz
YTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5
MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAt
ODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICBy
ZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9u
dFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIz
Mjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIw
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VH
REk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJh
MzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9s
ZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhk
YygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsK
IAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZv
bnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAg
ICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMw
ZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYw
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRS
ZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9v
bCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQog
Ci0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
Y3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9t
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0
b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
Y3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJv
b2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAg
dm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAt
NzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwog
ICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsg
ZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4Yjhm
YTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAx
YTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2
LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRh
dGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5l
cyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0g
ICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAg
ICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9k
YXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAg
ICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWls
YWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAg
ICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdh
YmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9v
bCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBt
YXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJl
c3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJr
ZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIs
NyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lk
IEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNv
ZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNi
Li5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAg
ICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZv
aWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5k
aWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZGIwYWIzNGIyNjE4YTA0MDJiMGQyNDNk
Yzg3MDdhMzY3ODIzZGUzLi5kOWY0OGVkMWIzNDA1ZDJkZWE5Nzc4YzNhNmM1NzJiYzUzMmZiOTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAgIHR5cGVzID0gbWFrZVZl
Y3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsK
ICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5
cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBB
U1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwog
CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRv
IHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVO
U0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcg
PSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0
V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVs
bHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcg
PSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0
V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQog
CkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgICAgICBpZiAoIWlzRGVjbGFy
ZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJv
bU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07
CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRh
dGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3Rl
ZE5hbWVdOwpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5k
aWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFU
QQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0
YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAg
ICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHZhbHVlKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICghaW5kZXgpCiAg
ICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNzYxLDcgKzc2MSw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0p
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7
CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDIxNmVkZDg0NzVlMTQ4OGRiOWVhNjEwZjEyM2JhYTgx
OWU2YjMxZmMuLmExNTE2YWUzNGY4MjliYTcyY2E1NjFkOTVlNGZjOTc4Yjk1MmQzOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0
YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxl
YXNlKCk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVGaWxlV3JhcHBl
ckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW4KICAg
ICBpZiAoIVJURkREYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXdDaGFuZ2VDb3VudCA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9y
VHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxlZ2FjeVJURkRQYXN0
ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CisgICAgbmV3Q2hhbmdlQ291
bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZl
ckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIoKSwg
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0K
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKQEAgLTI4NSw3ICsyODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICB9CiAKICAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCwgY29udGV4dCgpKTsKLSAg
ICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSkucHRy
KCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChhdXRvIGFyY2hpdmVEYXRhID0gcGFzdGVi
b2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKQEAg
LTM3Niw3ICszNzYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0
eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAg
ICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2Fj
eVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAg
ICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAg
IHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRl
eCBhN2ZlNzI1NTQzNzY2NWU4YjhhMGM3NDUzZDMwNDc0OWQ0NTYyZjY3Li5iNDlhZDdjMDRhNTI4
MTgyYTUxYjhhM2E5ODRkN2Q5MDRkNjM5Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KSBjb25zdAogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlw
ZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpkYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4g
ZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRh
KS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAg
ICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2Myw4ICsyNjMs
OCBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1
c3RvbURhdGEmIGRhdGEpCiAgICAgICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9y
bVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0zNDEsNyArMzQxLDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJy
YXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUo
cGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBz
dGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFz
dGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFp
bmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CkBAIC00NTcsNyArNDU3
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBb
aXRlbSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMo
ZGF0YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5n
ZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNE
YXRhLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNyw4ICs1MDcs
OCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJ
dGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
ICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlw
ZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJp
bmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKaW5kZXggMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5
YS4uNjIzNjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEz
IEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4g
Km1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3Jt
RGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVS
TCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5
ZDJkODM3Li4xMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01G
b3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3Qg
RW5jb2RlZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBW
ZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1l
bnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFs
d2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBz
ZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdh
eXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZl
YmU3MDQ4ODRlMmU3MzY2Zi4uODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZjcwMDM1NWQ1
NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYS4uODhkZWRmYTQ1YzNmNGM0M2EzODE1Mjgw
ZGE1YTQxZTI2OTc1YjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICAgICAgCiAgICAg
ICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShoYW5kbGU9JXApICglcyki
LCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5k
bGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7Cisg
ICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAg
ICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi5lNTkyMjdl
MzhhYTA2MTJkOTI3YzgyNTlkMDE0N2RhNGJmNmE3NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCkBAIC05MTksNyArOTE5LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGEKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNl
KTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0g
UmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRv
IG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxm
LmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9u
RGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAg
IGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lv
bjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRl
eCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi5kNjM1Zjc5Y2QxZWM2
MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBA
IC0xMjQsNyArMTI0LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGln
bm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgp
KSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8v
IEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4K
ICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAg
LTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0
UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAg
ICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUg
bGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxh
c3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgp
LCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFz
dFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNr
IHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3Vu
ZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5
OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3
NWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1
cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBm
Li5lZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OSw4ICsxNDksOSBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURh
dGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
IGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3Vz
QnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
JiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVk
QnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2
MTNlNjAuLjNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0b3RhbEJ5
dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAppbmRleCA3MzY1ZjAxMDk0NGE5MjZiMGViY2E5OTZiZGRhZTE0NDk1MGY2
M2UzLi5mNDk4NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMzZjczYzA3NGJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2
LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291
bnQgeyAwIH07CiB9OwpAQCAtOTc4LDggKzk3OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZp
bGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2Jq
KTsKIApAQCAtMTAzMCw4ICsxMDMwLDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAg
ICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdy
aXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAg
IGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0
ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRl
biwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFu
ZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThh
YWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUs
NyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9
IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExh
c3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09S
RCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNS
ZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJv
cigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAg
IH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0
MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi42NTI3MjUwZTVhYmNkZGJh
MDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcApAQCAtMjEzLDEwICsyMTMsMTEgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1
ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3Ry
aW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3
MSw3ICsyNzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogCiB2b2lkIE1vY2tDRE1JbnN0
YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7
CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFj
ayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikg
PyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6
ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3Ry
aW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkp
LnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJp
bnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5k
ZXggNDMzZDllMWE0NWMyOTg4NTQyYjA1ZTc0YjQ3MTdhNzcwNTcyOGJiNi4uZThiYzM5NzlmOTNm
NDNkZDRmZmVkM2JlMDVlNjE3NmRkN2EzN2Q3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzgsMTEgKzc4LDE1IEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7CiAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7
Ci0gICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAg
ICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0
YSk7CisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgICAgIGlm
IChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYz
NTRlNTI0MC4uMGJjZDk3NmVkYTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJv
Y2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNw
b25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBX
VEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAg
ICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkp
OwotICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlz
aCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5k
ZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMDNhNzIxMWZjZWJi
MWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3
LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklY
TUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBh
dm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVT
aXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2Ny
aXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZp
bGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xl
YXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpk
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
ZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjU3
N2Q2NTZlNjdmY2NhNDY0MDUwYmZkMzRkYWRjMmEzNjI1ZTIzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIAogICAgIFZlY3Rvcjx1aW50
OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQot
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0
ZShtZXRyaWNzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIx
NjFjM2MyZjQuLjNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVy
KSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhj
MmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLjVjNGM4ZTcxZDRkZDM4MzVjMWQ1
NzIyYjgxY2M3YjU5ODQwZThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAg
IHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2Fp
dEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2Fs
bGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJh
MjBmZDhlMmZlN2QuLjk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1
NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpS
ZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3Jt
YXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJl
c3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
ICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25z
dCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0
IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAg
IGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNv
bnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6
b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0g
V1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9k
eS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNp
emUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5
ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li5mMWVmZmYzNTBmYTM3ZjZiNDY4
MTU5ZmM2NjJlN2FhOTQyODNkN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTAxLDggKzEwMSwx
MCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0
CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsg
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikg
eworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKaW5kZXggZTY3ZTA1YmE4NDc4YTU4MTgzMGUzOTcwNjhiMzJmYjA4ZDkx
YjdlZC4uZTY1YjJlYTgzOGIwODE4M2M5NmI4MzEyMGIxZmVmMTU2YmI4YzA5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYK
ICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3Bv
bnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5
dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRl
R0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRl
cy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVl
MzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLjI5ZjcxZDdlNmRjNzUwZWYxOWYz
Mjg2MmM4OWI3MTg1ZTAzYmY4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJl
dHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYz
YTZlM2RmMTgzMmU5Zi4uZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAt
MzksMTggKzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHko
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
cik7Ci0gICAgfQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6
ZSgpIDogMDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4u
YjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXpl
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVk
VGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjc2Yjcz
Y2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQg
c3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1
ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNl
OjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdl
YkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4u
MzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTU2OSw4ICs1NjksNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBp
ZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhl
IHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNp
emUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFs
dWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUx
M2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1
ZGZkY2MyYmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkx
MGZiYjZjY2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRj
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAg
ICAgfSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hh
cmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRj
MWMzNDA1YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2
NGU0MTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+
JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVm
PFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2
MGUyMWJkNDkyZDY1MzM3NGMuLmU5M2ZkODllN2VmYzA3NmE5YjkxODc3N2JkNjA4YzgzNDRiOTRh
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNl
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0Fu
ZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7
CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8
PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSwxMCArMjYxLDEwIEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNp
emUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNv
dW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdU
Rjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsm
XShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBl
bmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpA
QCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4g
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoYnVmZmVyKQpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJp
bmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBoYXNC
dWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAgICBpZiAoaGFz
QnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pihw
bGF0Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnkmIGRhdGEpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07
CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07Cisg
ICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAg
LTMwMTcsNyArMzAxNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zCiAKIHN0ZDo6b3B0aW9u
YWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDMxLDcgKzMwMzEsMzUgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFIKIAogc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
YnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAg
ICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxl
KGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLmVmMDExMWZiNTYy
Y2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIENy
ZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29y
OwpAQCAtNzYxLDYgKzc2MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgy
OWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhi
YWIwM2E3ZTg5Mzk3MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0
aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0
b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNl
dEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9
CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVj
M2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2
YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlv
bmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgp
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0
YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlm
ICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzcz
NjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi5jOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2
NDg5MTZhZDJjYzI5ZDk4MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJl
Yzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDli
M2M0N2I0ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xB
U1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTg4LDggKzg5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFn
ZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29s
IGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsg
fQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggNjQ0OTFlMTYyZWM2
YzViY2ZhM2ZjNGNiMjQ5ZjhkOWNjYjYzOWIyMS4uMWI5YjU0YjYyNzE4MTQ5NTA4ZjkwMjdjODNj
NjczMjA2YmE4Mjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEs
IGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBs
YXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9u
KQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4u
OTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAg
ICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAt
MTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNlcmlh
bGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAK
LXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRU
eXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwNGNmZDAyOWFj
ODQ4M2E3YzMyMWJhNTRiMTE4MGM4NmZjNGZkNzhhLi4zZTkyM2NmNjQ5ZDk2ZTM0ZWQyYTUxZjkx
NzBkNWIxNzQxZmE2NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE2MDAsNyArMTYwMCw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGln
aGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmICho
aWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAK
LSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10g
aW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5T
KFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGln
aGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQg
aW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhp
Z2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3Vw
ID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpI
aWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpAQCAtMjIyMyw3ICsyMjIzLDcg
QEAgLSAodm9pZClfc3RhcnRJbWFnZUFuYWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAog
LSAodm9pZClfcmVxdWVzdFJlc291cmNlOihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKE5TRGF0YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3Qs
IFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAgICBf
cGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvci5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgbmlsLCBlcnJvci5uc0Vycm9yKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBm
NWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li42Yjc1NmFhNDE3YjUxZWRk
N2ZkM2ZmYmRkZjNjMjJlNDQ1MzE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQg
RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlv
bkRhdGEqIGRhdGEsIHVuc2lnCiAgICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1
dG8qIGN1c3RvbURhdGEgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgo
ZGF0YSwgJmxlbmd0aCk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9z
ZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURh
dGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rp
b25EYXRhLT5zZXRDdXN0b21EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0
b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVm
Li43MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjMyLDcg
KzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRl
bGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0
aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4
MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi5iZTE0MzcwZGUwOWJkNTcw
MmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMo
KQogICAgICAgICBpZiAobm9FcnIgIT0gQXVkaW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJh
dGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFyZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgp
IG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMp
XSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhp
cy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOworICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlMTBkYTY2
YWJmNjQ4NzJmOTEzYzEzMDUzYTJlYjdkYjdhN2ZjMmMuLjExY2M3NTI4YTFlNWY2YTg2ODRmY2Uw
NjdlMGFkYTA3NDYyZWU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0yOTgzLDcgKzI5ODMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkg
KgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3Jl
OjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBl
OldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFn
ZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwor
ICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6
aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0
cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwg
dGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1
ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKQEAgLTQ1MDgsNyArNDUwOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3Zp
ZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFn
ZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9h
cmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6
dHlwZV07CiAgICAgfQogCkBAIC00NTYxLDcgKzQ1NjEsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1w
bDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERl
c3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZElt
YWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCld
KTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBv
cHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDYx
Myw3ICs0NjEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgcGFzdGVBY2MKICAgICBoaWRlRE9NUGFzdGVN
ZW51V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JH
ZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtwYXN0ZWJvYXJkRm9yQWNjZXNzQ2F0ZWdv
cnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigp
ID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3Vy
cmVudFBhc3RlYm9hcmREYXRhKHBhc3RlYm9hcmROYW1lRm9yQWNjZXNzQ2F0ZWdvcnkocGFzdGVB
Y2Nlc3NDYXRlZ29yeSkpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY0MDAw
YTZiNzE5MTM1YzM0M2I0Y2QwOWMwMjNhNjhmMmM1ZTc4NWUuLmVhZjVlZWE5ODIzY2M0ZjI1OWVh
ZDNlMDdkMDkwODMxZDlkM2Y5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzM1LDEwICszMzUsMTAg
QEAgRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94
eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3QKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFw
LT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVx
dWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJl
c291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0
YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgV1RGTW92
ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
ODZmMWIzMDQ0ZmM4NzlkMDkzZmVlOTZjZWE2ZWIxMGE1Mzg3NjYzNC4uNzBiNTdiNTQ0NTM5MjY1
M2I0MjZhZDc4OGZiMTEyMjViNzkyYWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTY1LDYgKzY1LDcgQEAg
Y2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNh
bXBsZSA6IGJvb2w7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAog
ICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYs
IFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
RnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2b2lk
IHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCAxOTVjM2M4MjIwODhhNzdiYjlkZjE2Nzg1MDEwZjQxNTZjNmNjNjYxLi5lZDlkODMzN2Y0
NzRmNzc4ZWY3NmIxOTRjNjkyMGExMTg0ZjJhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCkBAIC00NjksNyArNDY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwg
V2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRh
cElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDk2Yzk1OTU1ZmFlZmE3MzA5YzFhMGNhMjAyZWUyZjFkYjYxZWI2YzUuLjJhY2Q5MTM1
MGFmNTNkNjdmNzljMzA1MmNiMmEwMmI3MWMwMDkyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM4Miw3ICs2MzgyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBD
b21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdlYnNpdGVEYXRhU3Rv
cmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShpZGVudGlmaWVyKCksIHNlc3Np
b25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGRhMDQzZjBkYWEyNTVj
OWFlZDMwMWEwMDQ0MDJiNmEwMjc0NjMxZGQuLmY2YzdhOWM5YzBkMDQ3YjhmYTg4ZTM2NGMyZjNl
YTVjOTU3YzkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0y
NTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNs
YXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJi
bGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5U
b2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApAQCAtMTM3NSw3ICsxMzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJv
eHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQg
cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAg
ICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5
ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5mOTRkZTkzM2ZkMGNkNDNlNDhi
YmFlZTc3ZjMwYWJiNjhmMGRhYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5
cGUKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAK
ICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDNiMDRhODMz
ZGJlMGI2YjY2ZWUxNGQzYzMwMGYzMDY4NzE4YmYyY2YuLjVjOGUzYjkyZjA4OTkyZWY0ZGFkNjJi
MTc3YTgyZjMxNjA4YmJiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dE
YXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBmYWM5ZTdmYjc4YmVlMGY2Mjk0
NTY3MmUzYmI3NGI5ZTA1MjBlMzBmLi5iNjg0ZTFjOTRlYWNiNjcyOGJiMTMwNjhjYjY5NTIyNzAx
ZmE4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAg
ICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBu
aWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTJmM2ExNWE0M2I4YWM0ZDE1MWZm
MzAzYzNjNWY3N2QxMzUzMGNiZS4uOTlhZWQwMzY4OGUwZTVjNjE3NDc5MGZkZGQ4ZDI1MGU5YWI3
MGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODQyLDcgKzM4NDIsNyBAQCAtIChCT09MKWNhblBl
cmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgog
CiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRh
IGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAg
ICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjY1MCw3ICs2NjUwLDcg
QEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0
ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9y
aWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAg
LTc2MjMsNyArNzYyMyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29y
ZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVO
YW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdF
Ql9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNy
ZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAg
c2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRh
LmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9z
aG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5k
aW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IGRkODI5NTNiOTBmNGYxM2JkYjhjYTc2YzQyOGQwYzA3MmMwYzVkYjkuLjdhOGZhY2QzMTdh
MDYzOTZkNjNiOGRlZWM2NTcxZTU1MTNlYzQ5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBX
ZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggZTQ0MjdlMmMyMGRmMWVhY2FhNDFkMDIzNTdlODdmYjNhZWMxNzBl
ZS4uY2E2Yjg3M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3
LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4u
MmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7
CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5n
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBl
cmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhlYWI5ODc5YmU4
MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMw
NWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MzQs
NyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNz
UGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIFttX2NvbnRy
b2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0ZWJvYXJkOndy
YXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRo
b2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2Vi
UHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBh
dXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciBwYXN0
ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdl
dCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFCeVR5cGUpIHsK
ICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwotICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBw
ZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5
cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0NTc2OGUzMDE1
ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEw
MTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAgICAgICAgIG1f
Y2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJKGNyZWF0ZUhh
bmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCi12b2lk
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2Us
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpIHsKICAg
ICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQo
dHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0YUFycmF5LT5l
bGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0t
PmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2
NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQw
NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCkBA
IC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2ViUGFnZSYsIGNv
bnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VT
ZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2
b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2Um
KSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwgV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBkZXN0aW5hdGlv
biwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2Mx
NzFlMzQxNDY4Yy4uYTM0ZTIxMmQwN2FmMmZmNTczZTFhOGEzNDBlYzFkM2ZjZWI0MmExYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
VVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VT
aGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8g
QmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKQEAgLTcyLDgg
KzcyLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmUKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+
IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJl
ZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29u
c3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVh
dGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7
CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSks
IHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgp
KSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0
cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRk
OGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRh
NjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAg
IGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2Mz
ZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOThhNmUyZTdiNTdlNTIzMThmNDJjOGNk
MTdlNGYwZGUwNTA5NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEsNyAr
MjgxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNl
IGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1
NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4Yzky
MTg1ZWIyMGUzMWRlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5n
TmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVu
dGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWSht
X2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IGRmMjc4YTc4ODRiYWM4OWQ1ZDE1ZjdkYzY0OWQ2NmQ4MDUwNGMxZjQuLmEw
MTAzYjAyYTBmNGQ0YTkxZTE3ZjM1MmJmOGY5ZjEwNTI1ZDhjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBh
c3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IDRjNDg4OTc2MDEyMmFmNzZmMDNiODBjNGY4NjYyYTEyM2Y0ZDkxN2UuLmUxNmIwY2YzODE4MDYx
MTBkYmM2ZTE3ZWI3NWQ5MWQzZTRiMDlhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTg4LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
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
NjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5Ny4uNGM2NjZkZDQwZDVlOWQ0
NTFhMWUwNmMxMWZkMDgwMDI3YTk4YjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3Rl
Ym9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBG
aXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1
ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92
ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5
cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxs
YmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNv
bnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMjA5LDcg
KzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNv
dW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVm
ZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmlu
Zz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7
CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4g
aW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwg
cGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDIwMGI2YzAxNTliNjg4YzcyYTNmYWRmYmFlMGE2OTQ4
MzFiOTM2ZTAuLjA0NWQ0Y2I4OWE5NjY0YTA4ZTFiODFhMDUzMDM1ZGM1ZDlkMGM1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGlu
dDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
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
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDAxODRi
ZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkuLmM1ZGU5MGM4MTBmMWFmNTQwNWMy
OWRjNDg2NmFkZmZjMzY5OTlhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
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
ZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0
NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4Zjli
ZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBX
ZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJl
c291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQx
OGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAK
IGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
c3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDk2YThkYmI4M2I3MjI2NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLjkzMGQ1OTBjZDRm
MmM0MGRjOGY5MTRkNWMwYTEwNDEwMzFiODIzYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMTAgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQg
bmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFja2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIx
ODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5iYWFlMjdhOTk4ZmZkNjkxYzEwNmI4ODcx
NTU2YmQ0ZjA1MjJjMjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDMsMzggKzQzLDQwIEBAIG5hbWVzcGFjZSBUZXN0
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+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgYnVmZmVyLT5jbGVhcigpOwogICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPnNpemUoKSk7CkBAIC04MywxMiArODUsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRf
Tk9UX05VTEwoYnVmZmVyKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIEFTU0VSVF9OT1RfTlVMTChjb250aWd1b3VzQnVmZmVyKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRpZ3VvdXNCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7
CiAgICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAg
IEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVY
UEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KV0pOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIp
CkBAIC05Niw3ICs5OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcikKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3RE
YXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CiAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CiAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CiAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKQEAgLTExMSw3ICsxMTQsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQw
MDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwogICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodmVjdG9yMikpOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CkBAIC0xNTEsMTUgKzE1NCwx
NSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3Np
bSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5h
dGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBB
YywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVz
dERhdGEsIGxlbmd0aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVy
IG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNo
ZWNrIGNvcHkoKS4KICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXpl
KCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5
KCk7CisgICAgYXV0byBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwogICAgIEFTU0VSVF9F
UShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNs
b25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisgICAg
QVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogICAg
IGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAq
IDUsIGNsb25lLT5zaXplKCkpOwogfQpAQCAtMTc1LDMwICsxNzgsMzMgQEAgc3RhdGljIHZvaWQg
Y2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKgogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMx
ID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdl
JywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaics
ICdrJywgJ2wnIH07CisKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoczIpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIAogICAgIGF1
dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwog
ICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgx
MCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdo
aWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNr
QnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZl
cihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEo
KSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgp
LCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wi
KTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hl
Y2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwot
ICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsK
KyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKKyAgICBFWFBF
Q1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEo
KSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5k
YXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCkBAIC0yMTAsMTUgKzIxNiwxNSBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShjb250ZW50KSk7CiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKLSAgICBh
dXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1
dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAg
IEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAogICAgIGJ1ZmZlcjEt
PmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2En
LCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydh
J30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdj
J319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgRVhQRUNUX0VRKG1h
a2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOwor
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCiBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMw
YjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi44NzI5MDM0NWI0MmYxMGM5YjJmMjM4M2NmYmM0
YzM5ZjhkYTZjMzE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSkt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1w
RmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmls
ZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQog
fQogCg==
</data>
<flag name="commit-queue"
          id="472385"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446877</attachid>
            <date>2021-12-11 05:40:01 -0800</date>
            <delta_ts>2021-12-12 03:50:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211212003957.patch</filename>
            <type>text/plain</type>
            <size>450609</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhOTA4Zjk3ZGNlOWZi
YmU5ZDQwN2ZlYWQ1MDUxNmRjYzQ1M2ExYS4uZjMwNzYxNjgyMDI2NmI3YmI3NzA4NmExMTY2Yjhk
MzY4Y2MyYTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhbiBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29yIG9uIEF1
ZGlvVHJhY2sgJiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwN2NmYzc4YzdkMWY0MDg1MzhmNjk0
YzE0NTlhYWU0M2I3MTI4YmMxLi41NjdmNmQ0YjU3M2JkZWM2ODA2ODhhNjQ3M2ZjNzZkZTY5N2Vl
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
ZFJlYWREYXRhVVJMKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6
ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
YXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rp
b25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6CisKIDIwMjEtMTItMTEgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCB0cmFj
a0NvbmZpZ3VyYXRpb24gYWNjZXNzb3Igb24gQXVkaW9UcmFjayAmIFZpZGVvVHJhY2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBmOTc5NzgwODZmOGZiYmY4ZjBhNjQ5NzA0ODIx
MGI1ZTczZmRhYy4uZWZmYmM0YmYwM2FmYjJmNjk0N2VjYTkwYmM0OTMwMzViZTk0NmI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTI1ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3Vt
ZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
V2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVd
KToKKwogMjAyMS0xMi0xMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTczCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzk0N2ViYTIyYTI1N2M5YmQ4NGE5ZmI2NmMx
YTI0ODY2YzliMjFiNi4uM2ExOTE2NjMxNzcyMGY3MjNlYjRkNjBjZjVlNmRiYjI4MzQ2ZDZiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6Cisg
ICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAg
KiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuaDoKKwogMjAyMS0xMi0wOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIGEgYERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnlgIHRvIGNvbnRyb2wgd2hpY2gg
cGFzdGVib2FyZCB0aGUgV2ViUHJvY2VzcyBpcyBncmFudGVkIGFjY2VzcyB0byB3aGVuIHBhc3Rp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRm
YWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5kZmFjM2E5NTQwN2YyYjM3M2FhODhkZmUzNzA3ZjJiOWJl
ZWFhZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmgKaW5kZXggMmI2MjYyODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uOWI1
OWViNWNjNDk1N2YwMzM2Njc1ODJlODY1M2FjMDc0ZmU4ZjM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
Ym9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjlj
OTA3OC4uNjliYzNkM2EwM2NlNDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsy
MTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRh
KCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYg
ISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0
cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAg
ICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
ZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9t
RGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyAr
MjQ5LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5p
c051bGwoKSkKICAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlm
IChhdXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQot
ICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkg
fTsKKyAgICAgICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tl
Q29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6
ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAg
ICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1
ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAg
ICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAt
Mjc4LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYg
KG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlclRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKQorICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nh
bml0aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYs
NyArMjk2LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9h
dFBvaW50Ojp6ZXJvKCkpOwotICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdlL3BuZyJfcykpIH07CisgICAgICAgIG1fZGF0YSA9
IHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImlt
YWdlL3BuZyJfcykpIH07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0OTVjNTMwY2Q3N2Q1NGY5
OWE1MjlhNy4uMmRjOWQ1MDBmMjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEzMTEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsMTEgKzM0
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2Fk
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcg
PSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVm
ZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OwogICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVS
ZWFkZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9h
ZGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBl
TG9hZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4u
MjkzZjUyMzBkMGQ3NzEyM2RiMTMwYjAxNjkzNjk5ZmJhZmY1NGFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMTU3
YzVmNTJjMDI2YmZhYTk3NjRlY2QyNTA0MjNiMTVkMTg2MzNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3
OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAg
ICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNp
emUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0
MjRjLi42ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICszMDEsMTMgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNr
SGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVz
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
cmVzdWx0KSk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJ
bmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAg
ICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAg
ICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAg
dGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMTM5NzU0
ZDMwZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5Mi4uYzM1Y2MzY2JjZWRiM2IyNTExYmYz
NTdhMzFhZmUyZDI3NDM4YmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAg
IHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVm
PEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3Bv
bnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRi
NDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uNDc1MDRjYmViZGFlMDM4MTY3NTlh
OGY2OGU4YzI0NjJmZGYyYTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNv
bGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgp
OwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNl
Qm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIg
YXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0
IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNh
Y2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkK
IHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+
JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNv
cHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBS
ZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCA5NGFkMjEy
YTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlLi5jYmY4YjY4YmE4YTNjYTNhYWMyZTQx
MjBiY2NkYmFmMmZhMTU2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNl
cHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVl
cnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5
SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiBSZXNwb25z
ZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JF
X0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQx
YTY3MDc0NDBmMmQ1Ni4uMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3M2M1MDU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3Qg
U2hhcmVkCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDog
a2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
ICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIyOGEzNGVhZWM1Nzk3YTMuLjA2YWZm
YjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogICAgIGF1dG8gbGVuZ3RoID0gYS5z
aXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6
aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpv
cHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0
cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2
NzZhYTVjNTBmOTQwYmU0ZjY2MTcyNWQ4YmY4YWMuLmQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQw
NWFjYTU0ZTcyZDYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pcwogdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBm
b3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVz
b2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCksIHNoYXJl
ZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29uc3Vt
ZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBlKCks
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNp
emUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQgdGhlbSBsaWtl
IHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxGb3JtRGF0YT4g
RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9ybURhdGEoKSkK
ICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFCb2R5KCkpOwog
ICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAgIHJldHVybiBG
b3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0
YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRhKCk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAgLTI5NywxNCAr
Mjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRC
b2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVu
Y29kZSh0ZXh0Qm9keSgpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAg
ICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCku
dG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5n
KCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2Rh
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
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGM4
NjVmN2RhMjM5N2FjNTU5M2I0NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3OGFlODc1ZGMy
NTYzZWJjYjJhNzg4ODVkMzBiYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
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
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNl
OTAwZDNmODQ4ZjY0ZjIuLmI5MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0
MSw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0
YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9y
bURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNl
dEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92
ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4
ZjU5MjcyOTMwYmJjMmQxNjY2YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
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
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlm
ZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4
NDIwYTY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
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
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
cm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNm
NDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmY1YmYyYjcyNmU2YWU5Njg5MzUzYzBhN2Uw
OGI0NWVmZGE1ZDkwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIs
NyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9y
RmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDI4MzFjZDNmYTljNmE0ZjlmZjlhOWEw
ZTI1YzNiNDJlNTJkMWI2NGQuLmNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAxZjE3NGY3
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFBy
b21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBh
ZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRp
dGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNB
bmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxE
YXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjAzMTM2ZmZjZjFmNmIz
N2U2YjA3YWI2MjMyZTYxZjY2ZGVlNzU4Ny4uOGRhOWZjYzY0MTZiNjcyMTdkMTc0OWViYjg5Nzgw
N2U0NzYxMTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3Np
dGVFZGl0Q29tbWFuZDsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0
b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247
CkBAIC01MzgsNyArNTM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJv
bVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5
RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTc1LDcgKzU3Niw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlz
ZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9y
PFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRh
KTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYyMywxMiArNjI0
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
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2Iw
MTUuLjFkOTdhY2QzY2M3OTE2MWIwYWM1MGM0YmY3MGNiMTUyZmMwZjQ4NGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03OCwxMCArNzgsMTAgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIH07CiAKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhl
NGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjc0ZmU4Mjg3ZThjMzkzYmUxN2E2NzY2NTM4ZDlmMzRh
MDkwYjMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQog
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsK
IH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUo
Y29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFj
dERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNj
MDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li5lN2EwNzFjYTQwMzllMDFmNDhkMGI0OTk1MDFl
ZDY0ZGU2MjZmMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmlu
ZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2
NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpw
bGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0
cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsK
IH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3Ry
aW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0
dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBl
cnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRT
dHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0
cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0
cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rv
cjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShl
bGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBF
ZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0
YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
b3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBv
dXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiAr
MTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0
YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2Vi
Q29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1f
ZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJl
cHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAv
LyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIg
YWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNp
YmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3Ry
aW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRG
cm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0p
OworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZE
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1d
KTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAg
TlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01h
a2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhm
ODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1
YjE1YzQyYjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0
YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAg
ICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsK
ICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAg
ICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7
Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRG
aWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRM
b2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBp
ZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNv
dXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRh
KCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCku
c3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxl
bmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBA
IC0yMzIzLDcgKzIzMjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVX
cmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAg
ICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVu
ZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5
YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjQ0MDU5YmU1YWU5ZTgxZGEzOWQ2Mjg5MjAxZDhl
ZDQ5MTU5NzM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAg
ICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsK
IApAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhB
dHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZh
bHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVu
dC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0
YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNo
bWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5h
bWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
LmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVz
b3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQog
CiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxl
bWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJm
aWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1v
dmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5k
YXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5k
KHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+
dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0
MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hp
dmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25z
dCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hp
dmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAo
IWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1h
aW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsK
KyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNl
Tm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRB
cmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAg
IGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50
ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgp
LCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFu
ZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAg
IGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBk
ZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2Fi
bGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGlj
IFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJ
bkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVp
cmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQog
Ci1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2
LDcgKzYyNiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3
ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFt
ZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAzMDM2
Y2QzMmQ2Y2Q4MzJjMjIwMjgzYTg0NDVhODk5YTVhNjZjYTNjLi5kZjA5MTlmNzVhY2Y3OWE4Mzky
ODMyMTE5MGM1Y2IyYmFmNzQ3ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtQ29weUZvbnQo
KQogICAgIFBhc3RlYm9hcmRCdWZmZXIgcGFzdGVib2FyZEJ1ZmZlcjsKICAgICBwYXN0ZWJvYXJk
QnVmZmVyLmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcGFzdGVib2FyZEJ1ZmZlci50eXBlID0gbGVnYWN5Rm9udFBhc3RlYm9h
cmRUeXBlKCk7Ci0gICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7CiAgICAgcGFzdGVib2FyZC53
cml0ZShwYXN0ZWJvYXJkQnVmZmVyKTsKIH0KIApAQCAtMjUwLDE1ICsyNTAsMTUgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFy
Y2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShp
bWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlz
IGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJL
aXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5k
ZXggNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5
ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBp
bnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmlu
ZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJv
Y2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBG
VFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQor
c3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9y
eVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9h
ZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9j
dW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1
bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5n
cygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBs
YXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3Jpbmcg
dGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRo
ZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwg
c3RvcmUgdGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZU
UCBkaXJlY3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVm
ZTQ3MzU4NjQzMGZlMGZmNzMuLmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250
ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5n
dGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRl
NDczMTg3OTViYWJhZjg1MmMyMzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYy
NjIzYzM3ZWNiYTdjMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEy
IEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNv
ZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5n
TmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2Rl
ZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNh
ZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4
OTdmODE2N2EzMmJlMjM3MzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBA
IGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAs
IHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJu
IGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3
aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1
M2I0YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1
MGE1YTIyMGZlNDRiMTk2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJj
ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNv
dXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRU
aHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdh
MWE3NDQ1YjFmNzBhLi5kMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQ
cmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIu
cmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBs
b2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0Ns
aWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4
IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAx
OGQ5MDBiYTFhNmQ3YTQ4YWU1NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJj
aGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8m
IG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2Vk
QXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVE
YXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVy
LnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2Zy
YW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0
YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNl
ZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJj
ZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1
bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3Bh
cnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJh
bWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRh
KCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRJY29uTG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmlu
ZGV4IDUxMjI3Yjk2ZDdkMTdjYTA3ZWUzYjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZiZDMyZmMyZWNm
NDZhZjdjZDkzNzlhOWQwMGM5OTExNmViN2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJh
bWU7CkBAIC0yMzUsNyArMjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRy
PEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNo
aXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICNlbmRpZgpAQCAtNjEyLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQ
dHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2Vk
QXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2Vk
QXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0Ns
aWVudEtub3dzQWJvdXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5ZmMwYTUzM2Rk
YjQ3OTNhNGIuLjA3NmYzN2RlMzI1OWEwM2MzODdhMWUwZDJhZmNhZWQyZDgyNTliMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGlt
aW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGZlMzJkOTRl
NDI4NjU5ZDVkNjFkYWJhNzIxOThlYjE5NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTliZDQ3YTdjYmJk
OGM4MzE3MzRjNGJiMTAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7
IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0g
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYp
IGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAg
dm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jl
c3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDZjNWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThh
OWViOGRhM2NlNmI0NGZhZDJiYzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RS
ZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAg
ICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMs
IFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBv
bGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICsz
MTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3
UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBu
ZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2Fk
RmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3Vy
Y2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAg
ICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZj
NDZjYWUwMjBlMmYzYWMuLjljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNz
IENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
T01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpA
QCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNs
YXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBj
b25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1h
cCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9j
YXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVm
ZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51
bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVu
dCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0g
c3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3
ZjNjOTRkZWJmMGE2YTQxOGY0NDMzZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBT
aGFyZQogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEg
PSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKICAgICAKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+
YXBwZW5kKCpidWZmZXIpOwpAQCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2lu
ZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJl
IGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1f
ZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0
NGY0ODg0YjYwYTZlZmUuLjcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYx
LDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJj
ZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJj
ZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5
MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRv
IG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwg
bV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAg
IC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1Qi
IHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4K
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFO
SUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNh
YWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1z
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8g
bm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBj
YWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9k
aWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQog
Ci1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFw
cGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAg
ICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJj
ZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBv
ciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0
aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRo
ZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3Vy
Y2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsK
ICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3Qs
IHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBj
b3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4
ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBj
bGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAg
Ym9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdj
M2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMw
ZTYzNjU5NS4uOTY5NmRlMTc2ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0
YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBk
YXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVD
b21tYW5kKCkpIHsKQEAgLTExMTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hl
PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkK
ICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgx
KTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5j
b2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0
ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRk
ZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNh
biBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVm
CiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNv
dXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51
cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlz
dFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVz
cG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewog
ICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlz
dFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAg
ICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsy
MTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0
eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJl
c291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZH
ZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkp
IHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJj
ZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRl
IGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25z
ZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVn
YWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NG
UHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewog
I2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENG
RGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3Qu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJv
b2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkK
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURp
Y3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRp
Y3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNo
aXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0
KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQog
ICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZl
OjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhw
ZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwog
ICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAg
IGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAg
ICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2
MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVS
TCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZl
IGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0
NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBA
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkK
ICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJh
bWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAg
IC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQg
b2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJv
cmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwi
OTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNw
cAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3
ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29k
ZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsK
KyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1M
IHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3
IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2Rpbmcg
Zm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBh
dXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVy
IGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAv
LyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3gg
KFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcAppbmRleCA0ZjIyOGU4ZDAzODliOGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1YmQyLi44NGFh
NzJkZjE5NjAzYTE5ZmFjOGYyZDBkNzQyOWNmYjhkNTdlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CkBAIC00MiwxMCArNDIsMTQgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChk
YXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUw
MTY3MjcyNzY3ZTUzZmEyZjhjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDEx
ICs5OSwxNSBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUg
dGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0
IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQg
PSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVu
bGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVn
ZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZi
MzZjNjEwN2E0NjMwYzAyNDE3ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6
ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBA
IFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiti
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9y
T2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBw
aW5nOwpAQCAtMTAzLDkgKzEwOCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0
ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikg
OiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRG
b250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRM
b2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5k
ZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYw
OTlmNTc1YWFiMzBlOTUzNDFmMTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxs
TmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQog
CiAgICAgdmlydHVhbCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKTsKICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9t
Q3VzdG9tRGF0YShGb250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9u
JiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwog
CiAgICAgdmlydHVhbCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZv
cm1EYXRhRnJvbUN1c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBi
b29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3Vz
dG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUw
MTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1
NzBhZGM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdl
KCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVy
JiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3Jl
YXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hv
dWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJ
bWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQ
b3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
KS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJl
ZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9z
dFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRl
NjNmZWI4NWJhMDU1MjAzZjQuLjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQy
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUs
NyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVw
ZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQw
OTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4
Zjk5MjRiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7
Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGls
ZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAg
ICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0
byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkg
eworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRh
dGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgyMDAwMTE0YTcyYTNlMmEwMTBlNzgxMDg4Li5kZmJh
NzYxY2IwNTg2NGY1NDI0NTIzYmEzN2NkNTVjNjAwNWRlZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkxNSw3ICs5MTUsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQog
ewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYg
bmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7
CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1
ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3
OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBA
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
OS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3
IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2Rv
Y3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25z
ZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9j
dW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIz
NDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4
YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwog
Ci0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7
CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0K
IApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRT
VkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2Nv
bnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQu
dmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYx
M2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYw
NTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJ
bml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRG
b250OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7
CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZH
Rm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29u
c3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCmluZGV4IDU0ZTY3NmNlNTBiMDk2YjU2MDdjM2MwMzBmN2Q5YWNjMDVj
NGZhODguLmI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwx
MyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNj
cmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBt
X2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWVi
NGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJh
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3
MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAg
KzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAK
IHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBp
ZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0
YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0g
ICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgx
YzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0
MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBm
b3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1
ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2Vk
U2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9u
c2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25p
dG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAg
ICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhj
YWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9
CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJl
ZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZm
ZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYg
KCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDE4MTc1MzFjYjY5
OGI4YTRlZGEyODEwY2M0NjZjODE2OWNiMTYzZWIuLmNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0
NWI5OGJhODRhNzFkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzQ2F0
ZWdvcnkgOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC05OCw3ICs5OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggOTdlMDFiNWM2OTc2ZDY3ZjBmM2JkZmNlZGVjNmFiY2YwNDg1MmM0
NC4uN2I5NjFkYjA0MDRjMWQxOTczNjA3NGU0YTlkNmMxZGM5NDIxMjI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xOTczLDcgKzE5NzMsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
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
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2
NGY3NzA4MmM0N2Q2N2YyNjNlZDVkZjk1OC4uNTk2YWZiOGU5MTg4OGMyYWE2NzJmYzBlNWQwNmNi
NjQ0OWRlZGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0
dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUo
KSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxNDc2
NDFkZGI2NTg4NWUzOWE4M2M2YTQ1NTU2YjFlYWE2YjM2NWY3Li40ZTI3ODJkOWJhY2I5ZDAxOWQx
MjAwMjBkZmYwMTE2ZTI1MjMyZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
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
CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTE0Myw3ICsxNDQsNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEJ1ZmZlciB7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAjZW5kaWYKICAgICBT
dHJpbmcgdHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogLy8gRm9yIHJlYWRpbmcgZnJvbSB0
aGUgcGFzdGVib2FyZC4KQEAgLTE2NCwxMCArMTY1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChD
b250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVm
ZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlw
ZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMzA4LDcgKzMwOSw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0
ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAg
ICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQpAQCAtMzQwLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4m
IHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUy
Yjk4OTUyY2NmNjdhZTcwLi4yMGNkNjFlNzExMjEzMjFjYzQ2ZDA3NzE5OTFhYWM1YWE0NzU1ODAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEo
Y29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0
YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNv
cHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIp
IH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
b3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3Ro
ZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJl
dHVybiB7IH07CiB9CkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAt
ODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVu
Y29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9y
ZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAt
MTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURl
Y29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlw
ZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwx
NCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5
LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50
cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09y
QnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAor
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0
YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAg
ICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8
U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnku
dHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3
ZTZhYmMwMy4uYzZjYmM3OTBjN2UwNWYzMTQ4MjA1ZmM1YTFjYzVhNDY4M2M2ZDYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURh
dGEgewogcHVibGljOgpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5n
IHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAg
LTYwLDE2ICs2MCwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
Jik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQg
d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYm
KSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9y
bVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4m
JikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJv
b2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAppbmRleCBlNzc5ZGFlYWU2NTk1MzQxOGQ5MGMxNzUwMTJkNThmYjk2OGE1MDBj
Li45YjFkNGI5NWVkZmJkZmEwNTk1NmEzOTkwNzFhYjlmZDkxODNiOTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGlu
dDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9y
TG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
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
ZXggZWI0MWE2OGNjNWFmOTIyZTg4MmVjMjY4ZWRiMmU5OTA1ZjQzYzI0NC4uNTI3MGM1OTg0MzU1
MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bh
c3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1h
Z2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBz
dHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODUs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05Myw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVS
TChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdl
ZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRh
Y2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4
LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0
b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMz
Nzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLmVhYzg0MTgzY2EzZDlhNDY0ODc4YzZj
NDhmY2UwMjIwYWRkNDc5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRh
dGEsIHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwor
fQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgp
KQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHBy
b3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBAIC03MywyNiArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBt
YXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0p
OworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVk
QnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7Ci19Ci0KIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKQEAgLTEwMywzMCArMTA5LDE2IEBAIHN0YXRpYyBWZWN0
b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNT
RVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhp
cyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxs
IGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkg
YXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMp
CisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVm
KCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21l
bnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFw
cGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0g
ICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRh
KCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOwogfQogCiBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CkBAIC0yMDIsMTAgKzE5NCwxMCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEu
bV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEu
bV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAg
ICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKQEAgLTIxMywxOSArMjA1LDE5IEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogCiB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KQEAgLTI0MywxNyArMjM1LDEyIEBAIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgY2xvbmUtPm1fc2l6
ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3Nl
Z21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1l
bnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBj
bG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24s
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAg
ICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQogdm9pZCBT
aGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9
IG1fc2VnbWVudHM7CkBAIC0zNTMsMTIgKzM0MCw2IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Ci17
Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQg
PT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRCdWZmZXI6Omlu
dGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKQEAgLTM3Miw0MSArMzUzLDEyIEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigK
LSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtdKGNvbnN0
IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBD
RkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdMSUIpCi0g
ICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0
YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3Qg
dWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAgIFtdKGNv
bnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAotICAg
ICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11dGFibGVE
YXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCiBi
b29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKQEAgLTQ1Niw3ICs0MDgsMTE4IEBAIGJv
b2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpzaXplKCkgY29uc3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
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+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAoreworICAgIHJldHVybiB7IHsg
ZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50Ojpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sKKyAgICBkYXRhLnNocmlua1RvRml0KCk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwor
fQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHTElCKQor
UmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPERhdGFTZWdtZW50PiBE
YXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
K30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRh
U2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsKK30KKworY29uc3QgdWlu
dDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAoreworICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCisjaWYgVVNFKENGKQor
ICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKKyNlbmRpZgor
I2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5
dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShH
U1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRp
ZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEu
ZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KKyAgICApOworICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNl
Z21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJs
ZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1
dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1
LDcgKzUzOCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVu
dCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3Np
dGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9z
ZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChw
b3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdt
ZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjYgKzU1MiwxNiBA
QCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVk
QnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBb
c2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3Rl
cnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3
ICs1ODcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3
N2IyZTZjNDU0OTE4MzkzNjhhZC4uN2Q4N2QzOTdhMzJkYTExY2EwNjIyYzA0NTk3MDZlOTk4OTdi
ODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDE0NiAr
NjIsMTM4IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5l
dyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUp
KTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEs
IHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
aXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6
IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVz
ZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwog
Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRh
KCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29u
c3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAg
dm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3Jl
YXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYKLSAgICAvLyBDYWxs
aW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRv
IG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhl
IHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6
IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3
aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29u
c3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4g
Y29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBi
dXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQg
aXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWlu
dDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICAvLyBD
cmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250
ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRl
ZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNp
emUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAg
ICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248
c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBk
YXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFU
SU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hy
aW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCi0gICAgICAgIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0KLSAg
ICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXIm
JiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHBy
b3ZpZGVyKSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVm
UHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRl
ciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVy
KSkgeyB9CiAKLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
c3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Cisg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYKLSAgICAgICAgRGF0
YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50
KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAor
ICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZv
ciBjcmVhdGVDRkRhdGEKK307CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90
PiwKK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
ICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsK
ICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNv
cHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRv
IGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5z
dGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFz
aXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGln
dW91czsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0gICAg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVh
Y2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYp
PiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQg
PSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
IHdoZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIx
MCw1NSArMjAyLDEwMiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBW
ZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigp
OyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25z
dDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLnNp
emUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlz
IHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVE
YXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hl
eFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7Ci0K
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wg
bV9jb250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZl
cigpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVz
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwog
I2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUg
eyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0OwotCitwcml2
YXRlOgogICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQg
cmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwotCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSog
Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUg
RGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
bXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAorLy8g
QSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRv
IGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBt
ZXRob2RzLgorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZm
ZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRp
YyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAg
ZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAo
c3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRo
YXQgeW91IGNhbid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJl
Y3RseS4KKyAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFz
c2VydC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChB
cmdzJiYuLi4pID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCog
ZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1h
eVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
cmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVf
RVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCiBp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAg
IGlmIChoYXNPbmVSZWYoKSkKQEAgLTI2NiwyMyArMzA1LDI0IEBAIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7
CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6
ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6
ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAg
IGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uM2Y3ZmJh
NDFhNGExZWZiMTFjY2RmZmQ1NzI2NzhjZGZmZTUzZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0K
IAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURh
dGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEy
NzFlMWI4YjllMTQuLmEwMzljMjUyNWVkNWZlNjM1MGNjYjBhMWFhMzY1MGQzMTk4NmY2MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFs
IDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBm
aW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZv
aWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0
IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
YmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYy
NTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQ
bGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkg
ewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdl
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJp
bmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcAppbmRleCA0NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyLi45
YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBA
QCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92
ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlz
aEVuY29kaW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0
eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0
KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZjU4NmMwMmJi
MTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZS4uZmFiNjZmY2JjYThmNDcxOTdlOThkNzli
ZjAyZWY4MTYxYTQyNzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0Yo
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3
NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi42OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1
YjNkZDU5MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCkBAIC00MSwxNyArNDEsMTMgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3Jl
IGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1
c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04p
Ci1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0
CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYg
KGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lm
PFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBm
b3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRC
eXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCkBAIC03Miw3ICs2OCw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIHZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhl
MjUuLjZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2FkOGYwNjdjNzgzZmNiZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTIxMSwx
MSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGlj
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYg
dHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmlu
ZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjk4MDU0N2I4Y2M0
YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAK
ICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2Vn
bWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21l
bnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFT
ZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihO
U1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVm
ZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRl
Z2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3Np
dGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CkBAIC05NSwyNyArOTUsMjYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoTlNEYXRhICpkYXRhKQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0
YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVu
ZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0
KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNl
Z21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1sw
XS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYg
KGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQ
YXRoXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VE
YXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTI2LDcgKzEyNSw3IEBAIFJldGFp
blB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKICAg
ICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVh
dGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1
ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXpl
OnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVh
ZTA4MGYzNzdlMjJiOTgzNC4uNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+
IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04s
IHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBi
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRl
eCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zODI5OGExZmVhYjVk
ZjNhNzNkNTNlNWY3MTk1NmEyZTgzMjAwZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAo
aW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5z
aXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0g
MDsKQEAgLTIwNiw3ICsyMDcsOCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIGlmICgh
a2V5SWRDb3VudCB8fCAhaW5kZXgpCiAgICAgICAgIHJldHVybiBrZXlJZHM7CiAKLSAgICBhdXRv
KiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0g
aW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0lu
aXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0
NSw3ICsyNDcsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAgIC8vIFRoZSBmb3JtYXQg
aXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKICAgICAv
LyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNoIGVsZW1lbnQgb2YgdGhl
IGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNv
bnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSkp
OworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CiAKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdp
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
aGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDJjZjQ0OGJlYTJmYTZhZTRkNDdmOTY0MDAyYjNhOTA2
YzAxMjkwNjcuLjY3NWUyNGI0MGFjN2FhZGU3NDA4NmYyNDJlYWQwMTUyMjFjMDI0ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIFN0cmluZyBjcmVhdGVBVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmco
Y29uc3QgQVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBoZXgocGFyYW1ldGVy
cy5sZXZlbElEQywgMikpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRp
b25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IElTTy9JRUMgMTQ0OTYtMTA6MjAxNAogICAgIC8vIDcuMy4yLjEuMSBTZXF1ZW5jZSBwYXJhbWV0
ZXIgc2V0IGRhdGEgc3ludGF4CkBAIC0yNTUsNyArMjU1LDcgQEAgU3RyaW5nIGNyZWF0ZUhFVkND
b2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgICAgICwgY29tcGF0aWJpbGl0eUZsYWdzLnRvU3RyaW5nKCkpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIElTTy9JRUMgMTQ0OTYtMTU6MjAxNAogICAgIC8vIDguMy4z
LjEgSEVWQyBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gcmVjb3JkCkBAIC00MzYsNyArNDM2LDcgQEAg
c3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29y
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRl
cnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSBEb1ZpIENv
bmZpZ3VyYXRpb24gUmVjb3JkIGlzIGNvbnRhaW5lZCBpbiAiRG9sYnkgVmlzaW9uIFN0cmVhbXMg
V2l0aGluCiAgICAgLy8gdGhlIElTTyBCYXNlIE1lZGlhIEZpbGUgRm9ybWF0LCBWZXJzaW9uIDIu
MCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMu
aAppbmRleCBhZjc1YzYyZDExNTgwYWQwMzhkNzE3YmU5NGIzMzFkMzlkZGRhMjdhLi5lZGZlY2Iy
NmQ4OTQ2N2EyM2QxZjU3MWNiYzVlOTFiMmZhMzQ3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC0zMSw4ICszMSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBGb3VyQ0M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBBVkNQYXJhbWV0ZXJz
IHsKICAgICB1aW50OF90IHByb2ZpbGVJREMgeyAwIH07CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZD
UGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZp
Z3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJik7CiAK
IHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBIRVZDUGFy
YW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0
ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25m
aWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CkBA
IC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0
ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNl
RG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
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
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDE2MTFiYWFjNDM3MGI1ZmM5
OGEyOTIwNzcyMzVkNDVlMDJiNWQwYmEuLmZjOWFhOTlhNjlkZmFlODllNjViMmFiM2FmNDg5MTQw
NzY4NWZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRp
bGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNj
cmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAg
ICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkpOwog
ICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVy
biAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8g
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNl
QVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7
CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJh
dmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRp
b24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAg
IGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikpKTsKICAgICAg
ICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2
YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Ft
cGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZDLCBjb25maWd1
cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKICAgICAg
ICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFN0cmluZyBjb2Rl
Y0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8
Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZT
VFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25S
ZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRp
b25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAg
ICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJh
YTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLjYyYmQxMzQ3OWM2YzMzNjJjYmU3
MjUxYmY2OWVhOGQxZjgxMGJlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMjQs
NyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qg
b2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAg
IHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtNzA5LDEyICs3MDks
MTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0
aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0g
aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBp
bml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAo
aW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQot
ICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZ
U1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IElu
aXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0g
YmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmpl
Y3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0
aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzcwLDcgKzc3
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Np
b25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsK
ICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0
byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJl
bW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4
OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXls
b2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBh
eWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEs
NyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYn
IGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQ
QUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRo
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3
Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3Bv
bnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5
U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNl
c3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdF
eHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgp
IHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9u
SUQiOwpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGly
ZWRTZXNzaW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEw
ODYsNyArMTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlE
cyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkp
IHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWlu
Z0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJ
ZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250
ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVy
cm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRy
KGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVz
dHMoVmVjdG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwog
ICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRl
KCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpw
YWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVj
dCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAg
ICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVu
dHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEo
KSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBr
ZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwg
YmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5s
ZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8
UmV0YWkKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVl
KCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlE
ID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgYXV0byBjb250ZW50
SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtl
eUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsK
ICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQp
LCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRh
ID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0
OSwxMCArMTI0OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURz
ID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAw
Njk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi5hNTRkZjNkYmFkZjkwNGY0
NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNv
dXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBt
X2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRl
UkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9h
c3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1
ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBb
QCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dICgpIG11dGFibGUgewpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6
ZSkKIAogdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCAxYTQz
YzdkZWQyNzZlMmMzZTVmNmY0M2EzOGYwNTExMjcyMDZkMGEzLi5hYmQ4MWU1ZjNjMWVhNTBlNDIy
ZTJmYTNjMmJhMWQxOGNmZTMxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3Mg
ZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZm
ZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5k
RmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRh
Om5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2Nv
bnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFi
YmY3MmE2ZjI0N2YwLi4zMmM1YTY2OGExNmFlNDhlZWU4YzlkMzhkYmZmMTMzMDVmZGFjMGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCkBAIC0yMTQsOSArMjE0LDggQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmxvYWRGaW5pc2hlZCgpCiB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OworICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNo
YXJlZEJ1ZmZlcigqbV9idWZmZXIpOwogfQogCkBAIC0yMjgsNyArMjI3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
CiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIo
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCkBAIC0yMzgsNyArMjM3LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlm
IChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0
YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVz
dWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpOworICAgICAgICBtX2J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMw
OWUwY2IyLi40NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSw2ICszMSw3IEBAIHR5cGVkZWYgc3RydWN0
IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CkBAIC01NCw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwog
fTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNl
NDVlMmQwNGJlZDNkNTBjMDYuLjIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFy
eVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0
UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90
IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAg
IHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUzLDcgKzI1Myw3IEBA
IEltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAgIGlmICh1dGlIaW50KSB7
CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNlVHlwZUlkZW50aWZpZXJI
aW50OwpAQCAtNTcwLDE1ICs1NzAsMTYgQEAgdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIE9uIE1hYyB0
aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRl
ZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCiAgICAgLy8gV2UgdXNl
IFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBn
ZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwogICAgIC8vIHJlYWxseSBs
b29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOworICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbHNlCiAgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3Jh
cCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7CisgICAgYXV0byBjb250aWd1b3Vz
RGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5y
ZWYoKTsKICAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRo
ZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCiAgICAg
Ly8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBh
bmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVp
cmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRh
UHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxi
YWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwg
ZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRh
dGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCks
IGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdj
MDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEy
NDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBA
QCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3Jl
YXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KaW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkz
YzNiYi4uODQ0YWM0NGYzYWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0
YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29u
c3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjYxZGJk
NjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7
Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA1
OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi5jYzU5NGYzODRlNTYzNWRl
ZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+
IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJl
dHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxl
LCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5
cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBm
MjQxZWVjLi5jY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEy
OSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xp
YnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJy
YXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJy
YXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA2ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQw
ZjRhZWJjODRjNjliMjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0
Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2Vs
ZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
Q2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsK
ICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpA
QCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRh
YmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAog
I2lmIFVTRShIQVJGQlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcAppbmRleCBjZGVkNGE2MGI1MGJiYmFlYTViODQ1YmRlZmJiNjg2ZmUyNTI1
OTMzLi5iNzQ5ZmMxNThkZmFiZWZkM2JkOGM0NTQ5OGJhMGE1YjI5M2JmNDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDI0LDkgKzQyNCw5IEBAIFZlY3Rvcjx1aW50OF90PiBH
c3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgp
LCBzaXplKCkgfTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFw
cGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShj
b25zdCBjaGFyKiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGQ4MmNkM2UxOGVj
ZTA0NzYxZDZhZDRlYzJkNTJlMmFkOWRjMzg0NjguLjJiNjA1OTIzOWJiN2YwZDhmYmU0NTYwMjZl
NTgyYTNmYzZmMDljMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtp
dEdzdENoZWNrVmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQog
ewpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAg
IH0KIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0
ZToKICAgICBHc3RNYXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIy
N2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLjI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIy
NjEyNmVhNDNhMzU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
CkBAIC00MjgsOCArNDI4LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIAogdm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwg
c2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIg
PSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRh
LCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5
cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggY2JiNDlkMTczNjJmNzEyZDI1ZGZlODI0ZGZjMWMzODFhNWRhMDI5My4u
M2EyMDE1NzgwMTQ4ODEwYWNlNTRkZjdiMDhlNGRmN2ZkNTIzN2Q2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2NjksNyArMzY2OSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVs
aW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1Iiwg
aW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAg
ICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5p
dCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxv
YWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1Rf
TUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlu
aXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXRE
YXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTcz
Yzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMy4uY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMy
NzYyNTZlMTgwMWYxZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7
IGZhbHNlIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0
RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBj
b25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9y
KiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNl
Q29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVz
ZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBp
ZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBz
c2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAg
IH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3Vw
UGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2Vy
IG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFy
a3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4
dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJz
ZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3Zl
KHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBh
eWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFw
YXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0
MGFjZjFkMzQyYTQ2NDdkMmYxLi43YmIyNzQzYTgyOGExYWYwNGE3OWVkZDc5MzNmMzdjNDUxZjMy
YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92
ZShwYXlsb2FkKSkpCisgICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5
bG9hZCA/IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKSkpCiAgICAgewogICAgIH0KIApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lz
dGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYmQxMTNiYjZjMjczMWZh
MTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMi4uNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNl
NmI0YmY1NDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRh
KGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFu
dCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJk
My4uN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9S
VCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMw
YzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWEx
ZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAg
IGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAg
c3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRl
bmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6
QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
cGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZh
bmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhl
cmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkK
QEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVC
YXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
aV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlw
aEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4o
YnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMg
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5
cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVj
dGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0
cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBj
b3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFs
R2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhD
b25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZv
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAg
Y29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1h
dGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5
cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRk
NDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1
OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNz
IE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRI
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQog
ICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMw
NDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
LmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWlu
dDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1
aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVp
bnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4g
MDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFi
bGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNh
dXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNh
c3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29u
c3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQ
dHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zm
c2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDog
Q292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVX
aXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSog
Y292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAg
ICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90
JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+
Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1
OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0
ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1l
IHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0
YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5h
bWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBv
biBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9u
dERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVu
Rm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXpl
KCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
c2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRo
ZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZv
bnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRl
bkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2Fl
YTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLjIyYmUyMzBhNjA1YzY2YTBlZjViYzE0OGEyNjI3
OTdkMzcyYzJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVt
b3J5UmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC01NCw4ICs1NSw4IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFt
ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+
Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYp
OworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNm
YTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzllOWVmZTA2MDUzMzU3OWU5
Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29u
c3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZm
ZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJT
dWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1
Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFi
bGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsg
dGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRl
cm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3
ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNb
MV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9v
a3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAg
ICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zm
c2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlw
aFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwg
R2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3
ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBA
QCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJl
VGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkg
PSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykK
QEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZl
YXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVj
dCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFu
Z1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5
c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAg
IH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
c2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2Nv
dW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVm
YXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBT
Y3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50
OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291
bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3Jp
cHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3Jp
cHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJs
ZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RP
ZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4o
YnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlw
dExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxp
c3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCog
bG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNl
dCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIp
OwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5
cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVu
VHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZl
cik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlv
bnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVy
dGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKQEAgLTM4MSw3ICszODEs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEht
dHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50
MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1
dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcp
OwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRh
dGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBU
aGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxv
dy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVh
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYs
NyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAg
ICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFi
bGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAg
Z3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwg
KmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYzg2ODNh
N2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIxYTMzYTYyMDVjMTgxY2Vm
ZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
MTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAg
IHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewog
ICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBm
b250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVk
YjFlZTk5NzFjNGVmLi5mYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0
cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3Ry
dWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdn
ZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwog
fTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTcz
YTgyM2EwMGMxNjc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5
MWUwNTg5Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAt
ODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICBy
ZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAg
ICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9u
dFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIz
Mjg2MGJhNWVmMjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIw
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VH
REk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QK
IHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJh
MzRhLi40MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9s
ZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhk
YygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsK
IAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZv
bnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAg
ICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMw
ZTI1ODA5ODZhLi43ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYw
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRS
ZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9v
bCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQog
Ci0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
Y3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9t
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0
b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
Y3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJv
b2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAg
dm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAt
NzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwog
ICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsg
ZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4Yjhm
YTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAx
YTkyYjNmM2M0Nzg5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzYsMTAgKzc2
LDkgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRh
dGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5l
cyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0g
ICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAg
ICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9k
YXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAg
ICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWls
YWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAg
ICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdh
YmYzMDVjLi5lNTY0NzEyMDAxNjdhM2ZiZDRlNmYxNzAzZGI5ZWZlYjZjN2Q0NDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9v
bCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBt
YXJrZXItPmRhdGFbMTFdID09ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJl
c3Nfc3RydWN0KiBpbmZvKQogewogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJr
ZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTI0Miw3ICsyNDIs
NyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lk
IEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNv
ZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaAppbmRleCBkMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNi
Li5jMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAg
ICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZv
aWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5k
aWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OGNjMGU3MmFmODc2NTVlYmFlNmNhNWQ0Yjk3OGMu
LmE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5NWEyNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yNDAsMTQgKzI0MCwxNCBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRU
eXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4
dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZm
ZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5
cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
UlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAg
ICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJl
c3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjU1LDcg
KzI1NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8g
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkg
Y29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlw
ZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJl
YWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDlkYjBh
YjM0YjI2MThhMDQwMmIwZDI0M2RjODcwN2EzNjc4MjNkZTMuLmQ5ZjQ4ZWQxYjM0MDVkMmRlYTk3
NzhjM2E2YzU3MmJjNTMyZmI5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0
CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJk
VHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBj
b250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFb
aV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVu
dC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1
dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAg
ICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0
aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAg
YXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
c2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsK
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0
ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIG8KICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElP
Tl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9t
RGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigp
ID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVk
VHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpA
QCAtNjcyLDcgKzY3Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4odmFsdWUpOwogICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCkBAIC03NDYsNyAr
NzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9y
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIGJ1ZmZlckZvclR5cGUodHlwZSk7CkBA
IC03NjEsNyArNzYxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwKIAogICAgIGlmICghW3Bh
c3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRl
bSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMjE2ZWRkODQ3NWUx
NDg4ZGI5ZWE2MTBmMTIzYmFhODE5ZTZiMzFmYy4uYTE1MTZhZTM0ZjgyOWJhNzJjYTU2MWQ5NWU0
ZmM5NzhiOTUyZDM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJl
ZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZElt
YWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0
dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMg
dm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVyICp3cmFw
cGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5w
dHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0
KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIG1fY2hhbmdlQ291bnQgPSB3
cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGF1dG8g
YXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewog
ICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJBcmNoaXZl
UGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApAQCAtMzQ0LDcgKzM0
NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmlu
Z0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0
cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0
cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3Ry
YXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQpOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFs
bG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVm
ZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3Ry
YXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
KSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmlu
Z107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IGE3ZmU3MjU1NDM3NjY1ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1
NjJmNjcuLmI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3ZDkwNGQ2Mzk3OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmlu
Zz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsK
ICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHld
KS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBj
b25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAg
TGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAq
c2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5v
cmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5
cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3Jt
VHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTM0MSw3ICsz
NDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNs
YXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2Fu
V3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJu
UGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0
eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAg
aWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1
dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRl
bT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAg
IGlmICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCAwYzkwODE3YzRlOWI0MWYzNDlh
NDFhZTY0YjcxOTA2Yjk1MWViODlhLi42MjM2NGQ3MTNjOTVhOWY4NDNjN2QyOWMwMWYwZGViOWFl
NmQxNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMo
KSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGU5ZDM0NDNmOGI1YzY4
MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcuLjEwODI4MTEzMWY4M2U5OTM3MGZjNTA5NzgzM2Nj
NTBlZThhZGJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lz
dHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb3JtRGF0YUVs
ZW1lbnQgewogICAgIHN0cnVjdCBFbmNvZGVkRmlsZURhdGE7CkBAIC0yMzIsNyArMjMyLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5k
YXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBj
b25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNT
dHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBt
X2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1
YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi44MThlMTgxODQ1MTk2N2FiNTJk
MTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBA
QCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0
OwogCiB2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YSho
YW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwg
ZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRl
ZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRh
KENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVE
YXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSks
IG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwg
b3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNh
MTU0ODlmNTcxNmMuLmU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTkxOSw3ICs5MTksNyBAQCAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdl
YkNvcmU6OlNoYQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVy
YXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+
c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0
ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lv
bi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMz
ZTZkYTIuLmQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIg
aXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hp
bGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5k
IG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRh
dGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5
KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90
Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQs
IGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1f
YnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0
IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRh
dGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9i
dWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBk
MzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5hY2Q4OGUxYjAyOWI5YjFl
N2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5k
bGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25s
b2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcy
Zjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLmVkMDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5Njdk
ZmNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ5LDgg
KzE0OSw5IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xp
ZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1v
dmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0
b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxl
LCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQg
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYs
IE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQy
MmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4uM2NhMjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3Yjg3
OGRkMTgzZmU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1No
YXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDczNjVmMDEwOTQ0YTkyNmIw
ZWJjYTk5NmJkZGFlMTQ0OTUwZjYzZTMuLmY0OTg2YjAwMTA4YjE3OGY2NDdlNzZlNzM0Y2EyYzNm
NzNjMDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0lu
Q3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNv
dW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
IHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9
CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzgsOCArOTc4LDggQEAgc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0g
ICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVu
dHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAg
IEdsb2JhbFVubG9jayhtZW1PYmopOwogCkBAIC0xMDMwLDggKzEwMzAsOCBAQCBzdGF0aWMgSEdM
T0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmls
ZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmls
ZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVk
ZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBX
cml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAg
ICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwg
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAw
KTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRl
bXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3
MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4wNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRh
MWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAg
IERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdP
UkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1Rv
UmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZp
bGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBi
eXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2Yg
ZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBH
ZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2Nk
NjEuLjY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2NWQyZjU4NjVkMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsMTAgKzIxMywxMSBAQCBi
b29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxp
dCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVy
LT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9u
c2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBj
ZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmll
dyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVT
dHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0zMzEsNyAr
MzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5k
YXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rv
ci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1
NzI4YmI2Li5lOGJjMzk3OWY5M2Y0M2RkNGZmZWQzYmUwNWU2MTc2ZGQ3YTM3ZDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC03
OCwxMSArNzgsMTUgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5n
KSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKICAgICAg
ICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQotICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGEgPSBtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNE
YXRhOworICAgICAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICAgICAg
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgq
Y29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQorICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
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
JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
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
YWE5ZDU2OWM1NGIwOWQ3Mi4uNTc3ZDY1NmU2N2ZjY2E0NjQwNTBiZmQzNGRhZGMyYTM2MjVlMjMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAg
IGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3
YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdh
ODg4YTdjYmRhNWQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXMKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2Fs
bGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4u
NWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcg
Qm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lk
IHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlk
ZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYx
YzFkNjEyZWEyYTQ0MzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6
ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCA2ZjI2YjRjYzJk
ZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiLi5mZGJmYjE0MzU5NzZjYmY2NWY2MTI1Njgz
YWMxZWRkMjQwOWUyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcg
KzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9y
bWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RG
Ojpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJv
ZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02
NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3Qg
U3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQu
cmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5
LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0
YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDku
LmYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNT
dG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVy
KQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07
CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVy
LCBib2R5LCB7IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjdlMDViYTg0NzhhNTgx
ODMwZTM5NzA2OGIzMmZiMDhkOTFiN2VkLi5lNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYx
NTZiYjhjMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVS
TERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJl
c3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZh
bHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFt
X25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4u
MjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkg
QEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRi
ZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5lOWNkODcyZjhkNDRmMTVlMGVlMzdj
NzM0OTJiMmQ4MDJhYzkwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCkBAIC0zOSwxOCArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29w
eSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAg
ICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAg
U2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVk
QnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9i
dWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1f
YnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJl
dHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
Q29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0
MjFlNzdhM2U2NmNiYTI3YjY1Li5iM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYx
NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC00OCwxMCAr
NDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVf
dCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1v
cnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkg
LT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3
YmU0OWRjZjU2NTJhYi4uNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw2ICs0NCw3IEBAIGNs
YXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKQEAgLTE1Myw3ICsxNTQsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgog
ICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXpl
X3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUz
NDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkz
Njk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRh
PiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENG
UmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihj
ZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5
NTkxNmFmZWRlMjlmY2JhMjQ0Li4zNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdl
YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY5LDggKzU2OSw3IEBAIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9u
dD4+OjpkZWNvCiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEg
Zm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUg
d2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250
RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0
YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNC4u
NDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9D
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAi
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlz
cGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBj
Njk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li4yYzE2MTFjOWU3MGY4Zjlh
MTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBz
ZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVy
biBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1Jl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNv
dXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAo
IXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRl
eCBkYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2Li5hMGVkMDg1NzM0Yjc3
NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owog
ICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3Vy
Y2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVk
QnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5
ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uZTkzZmQ4OWU3ZWZjMDc2YTli
OTE4Nzc3YmQ2MDhjODM0NGI5NGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVT
aGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7
CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7
CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3
ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEp
CitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6
ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjYxLDEwICsyNjEsMTAgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQo
ZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkg
PCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1
Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVj
b3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25z
ZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0o
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVj
b3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRC
dWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTUwLDEwICsxNTUwLDEwIEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNv
ZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVm
ZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1E
YXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFz
QnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7
CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTE1ODMsNyArMTU4
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
cAppbmRleCA2NDQ5MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5Y2NiNjM5YjIxLi4xYjliNTRi
NjI3MTgxNDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
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
Lm1tCmluZGV4IDA0Y2ZkMDI5YWM4NDgzYTdjMzIxYmE1NGIxMTgwYzg2ZmM0ZmQ3OGEuLjNlOTIz
Y2Y2NDlkOTZlMzRlZDJhNTFmOTE3MGQ1YjE3NDFmYTY1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTYwMCw3ICsxNjAwLDcgQEAg
LSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYp
aGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxp
Z2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dL
QXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3
a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGln
aGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5l
d0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6
aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107
CkBAIC0yMjIzLDcgKzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5TU3Ry
aW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5yZXF1
ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJiBlcnJvcikgeworICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKICAg
ICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWwsIGVycm9yLm5z
RXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
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
cGwubW0KaW5kZXggMmUxMGRhNjZhYmY2NDg3MmY5MTNjMTMwNTNhMmViN2RiN2E3ZmMyYy4uMTFj
Yzc1MjhhMWU1ZjZhODY4NGZjZTA2N2UwYWRhMDc0NjJlZTRjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5ODMsNyArMjk4Myw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6
aV0gaXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KV07CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMg
b2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpb
dHlwZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDc3LDcgKzQ0
NzcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3Jl
OjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhm
aWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsK
IAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2
ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5n
ZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwOCw3ICs0NTA4LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRh
KCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9y
bURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NjEsNyArNDU2MSw3IEBA
IE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3Rp
bmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAog
ICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUg
ZXJyb3I6bmlsXSk7CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1
ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSBwYXN0ZUFj
YwogICAgIGhpZGVET01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNz
UmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW3Bhc3Rl
Ym9hcmRGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSBkYXRhRm9yVHlwZTpA
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8g
YnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAg
ICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1
ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3Bh
Z2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEocGFzdGVib2FyZE5hbWVGb3JB
Y2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAgICAgICAgIGNvbXBsZXRpb24o
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZjQwMDBhNmI3MTkxMzVjMzQzYjRjZDA5YzAyM2E2OGYyYzVlNzg1ZS4u
ZWFmNWVlYTk4MjNjYzRmMjU5ZWFkM2UwN2QwOTA4MzFkOWQzZjlkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0zMzUsMTAgKzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJldHVy
biBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBwcm9j
ZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIHNlc3Np
b25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0dHBCb2R5KCkp
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6
OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShidWZmZXIpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAppbmRleCA4NmYxYjMwNDRmYzg3OWQwOTNmZWU5NmNlYTZlYjEwYTUzODc2
NjM0Li43MGI1N2I1NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3OTJhZDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94
eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBvcmlnaW5h
dGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQg
cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJz
aXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDE5NWMzYzgyMjA4OGE3N2JiOWRmMTY3ODUwMTBmNDE1
NmM2Y2M2NjEuLmVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIwYTExODRmMmE0MDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTQ2OSw3ICs0NjksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9v
bCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0
cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0
aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElm
TmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTZjOTU5NTVmYWVmYTczMDljMWEwY2EyMDJlZTJm
MWRiNjFlYjZjNS4uMmFjZDkxMzUwYWY1M2Q2N2Y3OWMzMDUyY2IyYTAyYjcxYzAwOTI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02MzgyLDcgKzYzODIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpbwogICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2Fs
bGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNl
KGlkZW50aWZpZXIoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggZGEwNDNmMGRhYTI1NWM5YWVkMzAxYTAwNDQwMmI2YTAyNzQ2MzFkZC4uZjZjN2E5Yzlj
MGQwNDdiOGZhODhlMzY0YzJmM2VhNWM5NTdjOTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwog
Y2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTExODMsNyArMTE4Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRv
d1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
OwogCkBAIC0xMzc1LDcgKzEzNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpOwogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3Qg
QVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNv
bnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEu
LmY5NGRlOTMzZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMTksNyArMjE5LDcgQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBk
YXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OworICAgICAg
ICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5
bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5
bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKaW5kZXggM2IwNGE4MzNkYmUwYjZiNjZlZTE0ZDNjMzAwZjMwNjg3MThiZjJjZi4uNWM4
ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhiYmIyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4OCw3ICsxODgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9v
bCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1l
bnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24o
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4
IGZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0YjllMDUyMGUzMGYuLmI2ODRlMWM5NGVhY2I2
NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1
bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAx
MmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEzNTMwY2JlLi45OWFlZDAzNjg4ZTBlNWM2
MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0
Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0
aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2Fy
ZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAg
ICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3Vz
ZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9
CkBAIC02NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdp
bnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlm
ICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAg
ICAgIHJldHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIzLDcgQEAgLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsK
ICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
LnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQg
bmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBs
aWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkp
IH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2Up
KSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3Nl
bGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxl
dGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZGQ4Mjk1M2I5MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcy
YzBjNWRiOS4uN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVlYzY1NzFlNTUxM2VjNDk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgs
NyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlNDQyN2UyYzIwZGYxZWFjYWE0
MWQwMjM1N2U4N2ZiM2FlYzE3MGVlLi5jYTZiODczYjFjODNmNWE1MDdiODVlYTBmZjMxY2VkYWRk
MWFhYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0Mzhj
ZDkwYmUzNzk0ZWVlMjA5MWJiLi4yYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUy
ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIH0KQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Vs
ZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdl
YkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJv
b2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0
N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdh
dGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwog
ICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRl
UmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0
KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAg
ICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGlu
Z0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5n
RGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0
aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNy
ZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5
cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBl
bmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAg
ICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAz
NTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVl
MzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFn
ZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZw
YWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0
UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFz
dGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRv
IGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBp
dGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAg
IHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMx
ZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5
MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9w
KFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2lt
cGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVj
NmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi5hMzRlMjEyZDA3YWYyZmY1NzNlMWE4YTM0
MGVjMWQzZmNlYjQyYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwog
c3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxT
aGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQpAQCAtNzIsOCArNzIsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZQogCiAg
ICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRh
dGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgY29udGlndW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250
aWd1b3VzQnVmZmVyLnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFS
ZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0
b0FQSShNSU1FVHlwZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxS
ZWYodW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4u
YTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2Rl
bCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwLi45OGE2
ZTJlN2I1N2U1MjMxOGY0MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAg
aWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uODcyOThi
MzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1
LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hv
dWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwog
CiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
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
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
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGU0NjdlZmZmZDc5NDdiNzhhNGI4
MDcwZDQ4ODhiMDZhZjhlYjdkYzUuLjM5YWI3NDhlMTI2NmQ1OWI3YzYyMGE3N2MzMzk4MzllZDEy
MTgxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQK
ICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
ZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUp
OworICAgIGF1dG8gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4
YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4
NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNl
bnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRh
ID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1Yjc2YjZkMTJjNGM0NTgxMzlmMzA4MjU4
ZDkzZmYzLi5jNjVlOTc4ODhiOTZiNzM3OTU4ODA1YjZmOGZhMDA5ZGNkMWZiMTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRp
dGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAK
ICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3Mo
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSwgY29uc3QgU3RyaW5nJikgZmluYWwgeyBy
ZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQx
YTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UgogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAxZDgxZmZhMTlkOTdmMDRlYzdjYzU3NWIz
ZWNlNWU4ODgxNDQwYjM5Li5lMzUxZWE5OThjMDdlNGIzMDQ2ZmM5MGQyNjQ1ZmFiM2U2ZDBkODhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBw
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
b3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAxODhlYzUwMDQ1MDc3
ZDc4YjAxMjBhNmRhZmJiMDRmYjc5Mjc2NDY0Li5hM2UzYzkzMTY4ZDg5MzY1MDJhYTZlN2Y0NTRl
NGU1N2VkMWIxMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5
cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZm
ZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0y
MDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
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
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMDg3YjY5ZTdhOGIwYjY4OGFjYmZlNDRlNGRhYjFiN2Jk
YTU0MWYyOC4uOTU4MWFiYmQ5MzJhNTFiYmU5ODIwNWEyMzEzYTVjODA5YmE2OTdmMyAxMDA2NDQK
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
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTZhOGRiYjgzYjcyMjY0NGRjNmYwMmVhMzVmMjU5MDE3
YWI5YzZiZi4uOTMwZDU5MGNkNGYyYzQwZGM4ZjkxNGQ1YzBhMTA0MTAzMWI4MjNjNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5k
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmJhYWUy
N2E5OThmZmQ2OTFjMTA2Yjg4NzE1NTZiZDRmMDUyMmMyMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MywzOCArNDMs
NDAgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShT
dHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0
aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAogVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgpKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVy
LT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBidWZmZXItPmNsZWFyKCk7CiAg
ICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTgzLDEyICs4NSwxMyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIGF1dG8gY29udGlndW91
c0J1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGNvbnRpZ3VvdXNCdWZmZXIp
OworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGlndW91c0J1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwogICAgIEVY
UEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwg
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNU
X0VRKCdhJywgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlcikKQEAgLTk2LDcgKzk5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEy
W10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxl
bih0ZXN0RGF0YTEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxl
bih0ZXN0RGF0YTIpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hh
cmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwpAQCAtMTExLDcgKzExNCw3IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMp
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwor
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CiAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CiAgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKQEAgLTE1MSwxNSArMTU0LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQog
ICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNh
Z2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIK
ICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlk
aWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0
YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
ICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRT
aXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgogICAgIEFTU0VSVF9FUShsZW5ndGggKiA0
LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUg
PSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKKyAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVmZmVyLT5j
b3B5KCk7CiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFT
U0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNs
b25lLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBj
bG9uZS0+c2l6ZSgpKSk7CiAgICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAg
ICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CiB9CkBAIC0xNzUsMzAgKzE3
OCwzMyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdj
JywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsK
LSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKKyAg
ICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rv
cjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKwogICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7CiAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczMpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAg
ICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsK
ICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+
ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdo
MiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZl
cihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCks
IGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6
ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgp
LCAiYWJjZGVmZ2hpamtsIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamts
LnNpemUoKSwgImdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXpl
KCksICJnaCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsK
ICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKQEAgLTIxMCwx
NSArMjE2LDE1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgICAg
ICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKICAgICAgICAgcmV0dXJuIGJ1
ZmZlcjsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywg
J2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYics
ICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0
KCkpOwogCiAgICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdj
JywgJ2QnfSkpOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAn
ZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0p
LmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2In
LCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7
CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLjg3MjkwMzQ1
YjQyZjEwYzliMmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNjIs
NyArNjIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446929</attachid>
            <date>2021-12-12 03:50:13 -0800</date>
            <delta_ts>2021-12-12 21:54:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211212225010.patch</filename>
            <type>text/plain</type>
            <size>447395</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkNjBiOWJiMjJiNTU2
ZTZlOWVjM2FhZGU1NmIxNzRkN2FmYTI0YS4uOWZiOTBiMjY1MGEzMmIwZmU4NjU4Nzc1ZGIwNjg1
NzcyZTkwYWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAK
ICAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVtIHdoZW4gY3Jl
YXRpbmcgZnJvbSBhIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkwN2Y5ODdm
YWMyN2E3YzJhOWViZS4uOTlkYTJjNzhhMjc1YjgzNWE4NDUxYjU1MWIzYTdhYjBhMzVmZTAxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMw
CisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hl
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFk
RGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpi
dWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5z
TWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0
YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTExICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vbWVudHVtIEV2ZW50IERpc3BhdGNo
ZXI6IFRhaWwgZnJhbWVzIGFyZSB0aGUgd3JvbmcgdmVsb2NpdHkgaWYgbW9tZW50dW0gZXZlbnQg
ZGlzcGF0Y2ggcmF0ZSBkb2Vzbid0IG1hdGNoIHNjcmVlbiByZWZyZXNoIHJhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA1NWU0YzE4YzRmNGYxMTJmNjg3MTY1NjQzMGM3NGY5ZTAy
ZDZiOGY1Li5iY2YyN2IwOWFkZDU0MGFjYmY3NzQ0MDJhMDE0NTY3ZmZmNDdlZDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjUgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVl
IGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToK
KyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAg
ICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRT
b3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3Jl
YXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgor
CiAyMDIxLTEyLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgcmVkdW5kYW50IFN0eWxlUnVsZTo6VHlwZSBlbnVtCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYTg5NWM2NmMxZjE5MzdiZmE4OWQyNjI4ZDBjMGI5NjA5MTBhOTZjMC4u
ZjFiZTM1MDZhOWIwNWIzNGNmNWU1OGYzNzFiM2M2MjY5MDU2MmRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3Vy
Y2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0x
Mi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFk
ZCBhIHN0ZDo6bnVsbHB0cl90IGNvbnN0cnVjdG9yIGZvciBSZWZQdHIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZElt
YWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMz
ZDRlLi5kZmFjM2E5NTQwN2YyYjM3M2FhODhkZmUzNzA3ZjJiOWJlZWFhZjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYy
ODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uOWI1OWViNWNjNDk1N2YwMzM2Njc1
ODJlODY1M2FjMDc0ZmU4ZjM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
IAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5k
ZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uNjliYzNkM2EwM2Nl
NDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAg
ICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+
KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6Omdl
dDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRl
RGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsK
KyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlw
ZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051bGwoKSkKICAgICAgICAg
bV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVmZmVy
ID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAgICAgICBtX2RhdGEgPSB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICAgICAgbV9kYXRh
ID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9Owog
ICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogewogICAg
IGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFya3VwVG9T
YW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAg
IGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4obV9k
YXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nh
bml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4LDkgKzI3OCw5IEBAIHZv
aWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2Uv
cG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7
Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Piht
X2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQorICAgICAgICAgICAg
YnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4o
bV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gdXRmOEJ1ZmZl
cihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBD
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6
c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9hdFBvaW50Ojp6ZXJvKCkpOwot
ICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0Rh
dGEoImltYWdlL3BuZyJfcykpIH07CisgICAgICAgIG1fZGF0YSA9IHsgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdlL3BuZyJfcykpIH07CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgK
aW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMmRjOWQ1MDBm
MjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEzMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsMTEgKzM0LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJs
aWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9u
SGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNz
IENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQs
IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMw
MjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uMjkzZjUyMzBkMGQ3NzEyM2Ri
MTMwYjAxNjkzNjk5ZmJhZmY1NGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJ
SW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFj
YTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMTU3YzVmNTJjMDI2YmZhYTk3NjRl
Y2QyNTA0MjNiMTVkMTg2MzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3
MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQg
PSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAg
IH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
Y29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVz
dWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRl
eCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi42ZTVjNDU2NGQ1Yzc2
ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICszMDEsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRk
QWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9u
c2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7
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
IHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODUs
NyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3Vv
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
NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3OGFlODc1ZGMyNTYzZWJjYjJhNzg4ODVkMzBi
YWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUo
cHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9t
KCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNv
bnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsK
LSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29u
dGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9y
bURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAg
ICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZv
cm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVF
cnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZm
ZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICByZXR1
cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmI5
MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1
bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBj
aHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9j
b25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90
IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAg
ICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAg
fSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAg
W3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAg
ICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAg
ICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4
ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2
YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVh
bSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25z
ZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShS
ZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4
NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0MGYx
MWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkp
OwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBo
aWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
aGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAx
KTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJk
OWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNiOTVkN2NmMDA3YWE1NGZi
ZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00Niw3ICs0
Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQx
NTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7
CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMmEyYzFmYzMy
OTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNj
MWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxs
LCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRF
bmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAg
ICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
SURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtl
eShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNv
bnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQw
MTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURC
S2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNl
MWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAg
ICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNh
Y3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0
LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUg
aW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ug
Zm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYg
KCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVh
dGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07
CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
aW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAt
MTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlz
dHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5z
YWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9i
amVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAg
IFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1v
dmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQt
b25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUg
c3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4g
YW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtl
eS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwo
KSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1
dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBl
ckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIg
SURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAK
ICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5
VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25l
IGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5n
ZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2Vy
S2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3Mg
fTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkg
PyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwor
ICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAg
ICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEw
MzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVu
dHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7Cisg
ICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsK
ICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1
ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAg
ICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsr
LCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
YmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhm
ZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2
NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFk
eVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRh
dGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBt
X3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRl
eCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li5lNzllYmRiYWM0MDgz
ZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNz
YWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9
LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmlu
Z0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIx
Zjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQog
ICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6
OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUo
KSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRV
cGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEz
MDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1v
ZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVD
b3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdj
MDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBA
IHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1E
YXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVh
dGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAg
ICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2Zi
ZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThm
YWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVi
bGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIg
JiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAg
ICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1Rv
cDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcp
IHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9T
dHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRp
Z3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7Cisg
ICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVm
ZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFi
bGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIwYzNhOGM2OWE5YzMx
ZC4uM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkwMDdkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBD
U1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAg
ICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50
PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
b3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBT
dHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29s
PihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZv
aWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9
IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1t
ZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5n
OwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2lt
bWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
X2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRl
TGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmco
KSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1f
aW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJm
YmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2
YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBD
U1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcg
KzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNW
R0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRp
bmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1v
dGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBh
IHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNm
NmE5NzMyZjNlZDkuLmY1YmYyYjcyNmU2YWU5Njg5MzUzYzBhN2UwOGI0NWVmZGE1ZDkwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0
IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsK
ICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
CiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDI4MzFjZDNmYTljNmE0ZjlmZjlhOWEwZTI1YzNiNDJlNTJkMWI2NGQu
LmNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAxZjE3NGY3MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0YWNobWVudElu
Zm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVu
dChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjAzMTM2ZmZjZjFmNmIzN2U2YjA3YWI2MjMyZTYxZjY2
ZGVlNzU4Ny4uOGRhOWZjYzY0MTZiNjcyMTdkMTc0OWViYjg5NzgwN2U0NzYxMTEyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNz
IERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0
Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzgsNyArNTM5LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSos
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9u
ZUltYWdlcygpIGNvbnN0OwpAQCAtNTc1LDcgKzU3Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhF
bGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlw
ZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5n
PiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXRE
YXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYyMywxMiArNjI0LDEyIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhU
TUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNp
YmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgog
ICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2
ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5
ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlm
aWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4
IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjFkOTdhY2QzY2M3OTE2
MWIwYWM1MGM0YmY3MGNiMTUyZmMwZjQ4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCkBAIC03OCwxMCArNzgsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAK
QEAgLTEwNSwxMCArMTA1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRS
VEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hp
dmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJl
c2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIx
YmZhMjUuLjc0ZmU4Mjg3ZThjMzkzYmUxN2E2NzY2NTM4ZDlmMzRhMDkwYjMzNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6
OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChG
aWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxv
Yjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZp
bGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1
YjI0ZDkwYmI3Li5lN2EwNzFjYTQwMzllMDFmNDhkMGI0OTk1MDFlZDY0ZGU2MjZmMGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJm
N2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcw
NDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAg
YXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJp
YnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12
b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAg
ICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwog
ICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5
cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIK
ICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxl
bWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdl
YkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRl
ckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdl
YkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFs
dCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIw
MSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYx
ZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3
ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8m
IG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBs
YWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAg
ZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxl
V3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBu
b3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNG
aWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2Us
IE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNT
dHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAg
ICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVz
b3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRi
Njc5ZTIyNzkuLjQ0MDU5YmU1YWU5ZTgxZGEzOWQ2Mjg5MjAxZDhlZDQ5MTU5NzM1MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBz
dHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7
CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAg
IFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVy
KCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlm
aWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNF
bXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAK
LSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1h
Z2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUo
bmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBv
YmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7
CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAg
IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNl
LT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsK
KyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDog
YXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFy
a3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMg
c3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBB
bmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hv
d01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQy
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFz
SFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBN
YXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5k
YXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3Vw
QW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAK
IHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERv
Y3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRB
cmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4
MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFj
ZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21V
VEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVD
b250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgp
LCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJr
dXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50
LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0K
ICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUo
ZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNo
aXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDcgKzYxMiw3IEBA
IGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Myw3ICs2
NTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MzMsNyArODMzLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAzMDM2Y2QzMmQ2Y2Q4MzJjMjIwMjgz
YTg0NDVhODk5YTVhNjZjYTNjLi5kZjA5MTlmNzVhY2Y3OWE4MzkyODMyMTE5MGM1Y2IyYmFmNzQ3
ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtQ29weUZvbnQoKQogICAgIFBhc3RlYm9hcmRC
dWZmZXIgcGFzdGVib2FyZEJ1ZmZlcjsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLmNvbnRlbnRPcmln
aW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcGFz
dGVib2FyZEJ1ZmZlci50eXBlID0gbGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCk7Ci0gICAgcGFz
dGVib2FyZEJ1ZmZlci5kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkp
OworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmb250RGF0YS5nZXQoKSk7CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQnVm
ZmVyKTsKIH0KIApAQCAtMjUwLDE1ICsyNTAsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1
dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAg
IGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBG
SVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJv
YmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2Yg
dGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0
aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdo
aWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1
NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1
OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
OjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBw
ZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUs
IHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5n
KHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVE
b2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQ
YXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsK
ICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRl
bXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVm
ZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBi
b29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7
Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7Cisg
ICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1Jl
ZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxk
IGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGlu
dG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVu
dCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGlu
Zy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMu
LmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEw
ICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRlNDczMTg3OTViYWJhZjg1MmMy
MzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYyNjIzYzM3ZWNiYTdjMWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0
QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIg
PSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVU
eXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
ICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUx
YWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdmODE2N2EzMmJlMjM3Mzcx
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50
KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIElu
c3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0
aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUs
IHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0
MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMs
NyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAg
ICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZl
ci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2
MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5
LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJl
cXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5m
cmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxz
LCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2
MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAxOGQ5MDBiYTFhNmQ3YTQ4YWU1
NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hp
dmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJU
KG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICpt
X2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFp
blJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNl
LmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5S
ZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsK
LSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2Uu
ZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNo
aXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3Rv
cCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdl
dCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDUxMjI3Yjk2ZDdkMTdj
YTA3ZWUzYjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZiZDMyZmMyZWNmNDZhZjdjZDkzNzlhOWQwMGM5
OTExNmViN2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNo
ZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVu
dEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVh
ZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMzUsNyArMjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291
cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hp
dmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxv
YWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAt
NjEyLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUo
V0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNo
aXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5k
aWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5ZmMwYTUzM2RkYjQ3OTNhNGIuLjA3NmYzN2Rl
MzI1OWEwM2MzODdhMWUwZDJhZmNhZWQyZDgyNTliMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUo
KTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQg
aXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VM
b2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGZlMzJkOTRlNDI4NjU5ZDVkNjFkYWJhNzIx
OThlYjE5NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTliZDQ3YTdjYmJkOGM4MzE3MzRjNGJiMTAzNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzgsNyArMjc4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2Vz
KCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZjNWVlM2E5YjMxYWU4Yjg0
ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThhOWViOGRhM2NlNmI0NGZhZDJi
YzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3
ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBj
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQo
KSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVy
bCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAg
ICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwg
cmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1l
LCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVz
dGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0
Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZl
dGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZjYWUwMjBlMmYzYWMuLjlj
M2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsK
IGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDog
dWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNI
SVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2
ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9s
aWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUg
PSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQg
Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcx
NDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0
NDMzZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtMzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29w
dGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwg
ZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBp
ZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpA
QCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZl
ciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29u
J3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBn
aWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0g
U2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcx
OTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMt
PnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpy
ZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRh
dGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXgg
ODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAw
Y2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2
MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlm
ZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEo
KSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0
ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVz
dFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9m
IHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUg
b25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3Qg
YmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcy
MGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApA
QCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxl
VVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2Up
CiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9m
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNl
IHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJl
c291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
Y29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVx
dWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1h
eWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9h
ZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3Jp
Z2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3Rh
dHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsg
ZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4g
aW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNr
IGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFw
cGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2Ug
ZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
CmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRk
NmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0
Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBs
aWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5
LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZh
bGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
LSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAg
IHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFj
a0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMw
MTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3
YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2
ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTEx
MTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBT
dGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNp
Z25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5J
bnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAg
ICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQo
Nyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRh
YzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQw
ZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11
c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJl
IG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFy
CiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWlu
IHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byBy
ZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJl
c291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJl
c291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rp
b25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAg
ICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9u
IGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2Ui
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3RE
YXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAg
fQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGlu
ZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJj
aGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNm
RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJl
ZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5
TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRh
YmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAg
LTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBD
RlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJ
RCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZl
IHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2
ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdl
YkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsK
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3Vy
Y2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyAr
MzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3Vy
Y2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBA
IC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBz
dWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hp
dmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFy
Y2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29s
IExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAg
ICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQg
c3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJp
bmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgp
OwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91
dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJl
c3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFy
Y2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4g
YW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1l
bnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAg
IFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lu
d2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4
JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
KCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAy
MDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMy
ZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0
byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dp
dGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1J
TUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNv
ZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1
b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmlu
dGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgp
LCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZl
LCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlv
bnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdl
bmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA0ZjIyOGU4
ZDAzODliOGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1YmQyLi44NGFhNzJkZjE5NjAzYTE5ZmFjOGYy
ZDBkNzQyOWNmYjhkNTdlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNj
NmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhj
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAg
ICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRo
ZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0
ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlm
IChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAg
ICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRl
ZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUx
ZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3
ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBt
X2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hl
Y2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250
OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNM
b2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEw
OCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIg
YnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAt
MTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+
IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQg
PSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRh
ZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFm
MTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBz
dGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29s
IGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQ
dHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0
ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZm
NmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAt
NTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
KyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQog
ICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQu
LjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4
Mzk1NjJmLi44NzMxZWI4MmNiOGVmMDFhZDNiMTQ3ZDkwMDkxZTk4Zjk5MjRiZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRh
dGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2
aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBw
cmV2aW91c0RhdGFTaXplKSB7CkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZi
OTE3NGZmNjgyMDAwMTE0YTcyYTNlMmEwMTBlNzgxMDg4Li5kZmJhNzYxY2IwNTg2NGY1NDI0NTIz
YmEzN2NkNTVjNjAwNWRlZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRh
KQogICAgICAgICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3
OGU5ZmFhODVjMTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRT
ZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxv
YWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNj
ZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXgg
N2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1
MzZiYTk3YjJiNmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3Mg
dG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAg
ICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQo
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2
MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRp
c2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdF
cnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwg
IWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAg
ICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJu
YWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2
MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxT
VkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRG
YWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0Rv
Y3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0
dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmlu
ZGV4IDU0ZTY3NmNlNTBiMDk2YjU2MDdjM2MwMzBmN2Q5YWNjMDVjNGZhODguLmI4YjMwYjdlMDgy
Y2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNo
ZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRT
aXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBt
ZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYx
Li5hYjE3MTE0NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1
ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2
M2ZjMjVkODUyZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBD
YWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVk
U2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
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
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDE4MTc1MzFjYjY5OGI4YTRlZGEyODEwY2M0NjZj
ODE2OWNiMTYzZWIuLmNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgOiB1aW50OF90Owog
ZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRnJhbWU7CkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNv
ZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
OTdlMDFiNWM2OTc2ZDY3ZjBmM2JkZmNlZGVjNmFiY2YwNDg1MmM0NC4uN2I5NjFkYjA0MDRjMWQx
OTczNjA3NGU0YTlkNmMxZGM5NDIxMjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTczLDcg
KzE5NzMsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAg
ICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNw
ZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVz
LCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0
L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAg
YXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CmluZGV4IDE2NWFhODA1OGEwMzkwYjQ1MTU3OWExNDc2MWJkODY3OTQ5MzY0MzMuLjAxZTE2ZGQ5
OGY0ZGYwY2ViMjFkZjkwOGQxZjQwYzYyNGFhZTRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0g
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUo
KSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAg
ICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRo
ZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRk
IG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQt
PmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1Zh
bGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywg
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5n
KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9y
ZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJM
cy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFs
aXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1l
bnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVu
ZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsK
KyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVy
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNi
MDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgw
MDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwg
dXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
ICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRj
YjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0
YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1
M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2Rm
YjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hh
cmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hh
cmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lk
IFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9h
ZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsK
ICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxl
RGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAg
ICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAg
IG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJl
NjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRl
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQg
ZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2NGY3NzA4MmM0N2Q2N2YyNjNl
ZDVkZjk1OC4uNTk2YWZiOGU5MTg4OGMyYWE2NzJmYzBlNWQwNmNiNjQ0OWRlZGE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxNDc2NDFkZGI2NTg4NWUzOWE4M2M2
YTQ1NTU2YjFlYWE2YjM2NWY3Li40ZTI3ODJkOWJhY2I5ZDAxOWQxMjAwMjBkZmYwMTE2ZTI1MjMy
ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2Vi
Q29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRD
b3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJ
bkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNs
aWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAg
IFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlm
CiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lm
ICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJp
bmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50
RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnRE
YXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGlt
YWdlU2l6ZTsKQEAgLTE0Myw3ICsxNDQsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEJ1ZmZlciB7CiAg
ICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAjZW5kaWYKICAgICBTdHJpbmcgdHlwZTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhOwogfTsKIAogLy8gRm9yIHJlYWRpbmcgZnJvbSB0aGUgcGFzdGVib2FyZC4KQEAg
LTE2NCwxMCArMTY1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYK
IH07CiAKQEAgLTE4Miw3ICsxODMsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewog
ICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1
YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNs
YXNzIFBhc3RlYm9hcmQgewpAQCAtMzA4LDcgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRl
eCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFk
VVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAt
MzQwLDcgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2Fy
ZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25z
dCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5
cGUoY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3Vy
aXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdp
dGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi4y
MGNkNjFlNzExMjEzMjFjYzQ2ZDA3NzE5OTFhYWM1YWE0NzU1ODAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMs
MTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmlu
ZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50
PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29u
c3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3Ro
ZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAg
ICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICBy
ZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9Owor
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04
MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShT
dHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAor
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3Vz
dG9tRGF0YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdp
bkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShl
bmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2Fy
ZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29k
ZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
IGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQog
Ci12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0g
eyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0Rh
dGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0
byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlS
ZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5j
b3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsy
NjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0
byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3Jt
RGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkg
JiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051
bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
aW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYzZjYmM3OTBj
N2UwNWYzMTQ4MjA1ZmM1YTFjYzVhNDY4M2M2ZDYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0
cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTYwLDE2ICs2MCwxNiBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdp
bjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2lu
ID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVi
b2FyZEN1c3RvbURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0
b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lz
dGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcg
cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9p
ZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
IGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lk
IGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRh
dGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9p
ZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBl
Nzc5ZGFlYWU2NTk1MzQxOGQ5MGMxNzUwMTJkNThmYjk2OGE1MDBjLi45YjFkNGI5NWVkZmJkZmEw
NTk1NmEzOTkwNzFhYjlmZDkxODNiOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAt
NjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2
NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAg
IHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0
aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291
bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRG
aWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2
MDA3YmM4Nzc3NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNm
OGJlNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0
ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsK
ICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggZWI0MWE2OGNjNWFmOTIy
ZTg4MmVjMjY4ZWRiMmU5OTA1ZjQzYzI0NC4uNTI3MGM1OTg0MzU1MTA0ZjkxYTVjZTU0MjIyM2I0
NDljMmI1MTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2Fy
ZCB7CiBwdWJsaWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBl
czo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25l
cnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CmluZGV4IDFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1
YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlv
bmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFs
RGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDAyZWEzZWE4OWMyNmJiZTY2NTVmY2U2MDEw
YjAyMDNjMGQyZDQxOWIuLjA1NTI2YmZkYmM4NDlkMzVlZWVlNjA0MjUxNWRmNzc1MjQxZWI3ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3
LDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBz
aXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OwogfQogCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworfQorCitSZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworfQorCitSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92
aWRlcikpKTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisK
IFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZp
bGVEYXRhKSkgfSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50
OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHBy
b3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGFwcGVuZChXVEZNb3Zl
KGRhdGEpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RS
RUFNRVIpCkBAIC03MywzMSArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAg
OiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNl
bmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcp
Ci17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
Ci0gICAgfQotCi0gICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShm
aWxlUGF0aCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOwotfQotCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2
ZWN0b3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
dmVjdG9yKSkpOwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0Rh
dGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVf
dCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDgsMzAg
KzEwOSwxNiBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0
IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZp
cmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxp
bmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIx
NTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
KyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJp
bmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFy
KCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsK
LSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQo
KTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMjA3LDEwICsxOTQsMTAgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3QKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9z
ZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAg
ICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgp
OwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTgsMTkg
KzIwNSwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOwor
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXpl
ID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9z
aXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSAr
PSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0y
NDgsMTcgKzIzNSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBj
b25zdAogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMu
dW5jaGVja2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5j
b3B5UmVmKCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsg
ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAg
IEFTU0VSVChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJv
dmlkZXIpKSk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAog
ewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU4LDEyICszNDAsNiBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhh
c09uZVNlZ21lbnQoKSBjb25zdAotewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVy
biBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0z
NzcsNDEgKzM1MywxMiBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNF
KENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNl
bmRpZgotI2lmIFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1
ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwK
LSNlbmRpZgotICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAg
IHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KICNpZiAhVVNFKENGKQogdm9pZCBTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgog
Ci1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEo
KSksIHNpemUoKSB9fTsKLX0KLQogYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBA
IC00NjEsNyArNDA4LDEyMyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNp
emUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7Cisg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIp
Cit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250
aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAg
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRh
KSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1h
cHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAg
ICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAg
ICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNj
ZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7CisgICAgfQorCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmls
ZShmaWxlUGF0aCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpidWZm
ZXIpKTsKK30KKworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2Rl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCksIHNpemUoKSB9IH07Cit9CisKK1Jl
ZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNl
Z21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
K30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50
OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShH
U1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVu
dD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBw
cm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNv
bnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgW10o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBk
YXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxD
RkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNv
bnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVs
bHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgW10oY29uc3Qg
UmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25z
dCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVy
LmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11
dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyBy
ZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00ODAsNyArNTQzLDcgQEAgc2l6ZV90IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZp
c2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAg
ICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAs
IG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKQEAgLTQ5NCwyNiArNTU3LDE2IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7
CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
LSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2Vn
bWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgp
IHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsg
fQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVu
b3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM5LDcgKzU5Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVy
LnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCBlOWM4ZWQwODkyZDE1ODYxYTAwN2RiNWRjZTBmNWQ3NTQyY2ExNDhlLi43ZDg3ZDM5
N2EzMmRhMTFjYTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxMzggQEAgY2xhc3MgRGVjb2RlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERh
dGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBp
dCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNv
bWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNl
Z21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZp
bGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBl
bnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5k
aWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkg
Y29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwot
ICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0K
ICNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRl
cyopOwotICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+
JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmKTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRh
dGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90
IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQg
ZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhp
cyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgot
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rv
cjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0g
ICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0
YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlz
IG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsK
LQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsg
fQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIo
KTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYp
OwogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAg
Ly8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdt
ZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7
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
QnVmZmVyPiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJs
ZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKIAotICAgICAg
ICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVT
RShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgor
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRp
ZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0
cmFjdERhdGEoKTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNX
aXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8gQ3Jl
YXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhc2l6ZSgpOyB9CisgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRpZ3VvdXM7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBsZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBU
byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAg
IHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDUzICsyMDIsMTAyIEBAIHB1YmxpYzoKICAg
ICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5
LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQot
ICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2lu
IGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXpl
X3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lk
IGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQog
Ci1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXpl
KTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUlu
dG9PbmVTZWdtZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRo
ZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNs
ZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7
Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBj
b25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90
IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRh
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
X3QqIGRhdGEoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFz
cyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGlu
ZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJD
T1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsK
KwogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsK
ICAgICBpZiAoaGFzT25lUmVmKCkpCkBAIC0yNjQsMjMgKzMwNSwyNCBAQCBpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogICAgIHJldHVybiBjb3B5RGF0
YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7Citj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0
KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYs
IHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYs
IHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQt
PmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0
YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToK
LSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAg
IGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0
aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjNm
N2ZiYTQxYTRhMWVmYjExY2NkZmZkNTcyNjc4Y2RmZmU1M2QwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
U3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAgICAgbV9jdXN0
b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDliNmRlMzFmMmVkZWJlMDE4OGRjOWM0
NjZhMjcxZTFiOGI5ZTE0Li5hMDM5YzI1MjVlZDVmZTYzNTBjY2IwYTFhYTM2NTBkMzE5ODZmNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC0zMiw3
ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGljUGFzdGVib2FyZCBm
aW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAg
ICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihj
b25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmlu
ZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2
NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlp
bmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAo
bm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURh
dGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5p
bWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwg
U3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEz
Mi4uOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYs
MTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5y
ZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpm
aW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJv
cGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5
LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZj
MDJiYjE1YmYzOWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4
ZDc5YmYwMmVmODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2Rl
ckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZv
aWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYx
ZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjli
MjZjNWIzZGQ1OTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcApAQCAtNDEsMTcgKzQxLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4g
bW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9u
bHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFU
SU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAg
IGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6Omdl
dF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11
dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBj
ZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0g
ICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBw
ZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwot
ICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VS
VCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRp
Z3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0
YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
c3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVk
ZTI4ZTI1Li42ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0y
MTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2Fj
eVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0
YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRC
dWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1h
cEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMx
Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNo
ZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJp
bmcmIHR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAg
ICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQppbmRleCBlZTdiZDRiM2ZkYmY5YjdiYzZkOGRhMGM2MzU3NzVjOTU4NWI3MTY4Li5hZDk2Zjdm
NTNhMmRjYzA0ZDI5MzIxMDJlZWQ4MTk4MGZiZmQ1MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDEx
IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0
YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFT
ZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNV
SW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtOTUsMjAgKzk1LDE5IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChO
U0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBh
cHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2Vf
Y2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9P
bmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBAIC0xMTksNyArMTE4LDcgQEAg
UmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25z
dAogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hh
cmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjow
IHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIw
NzExZWFlMDgwZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3
NzgwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9i
amVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMg
SlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CmluZGV4IGRkMzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFm
ZWFiNWRmM2E3M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAg
IGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0g
ICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0
RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRp
Z3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXRE
YXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNp
emUgPSAwOwpAQCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRy
YWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAg
aWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpA
QCAtMjQ1LDcgKzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZv
cm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgog
ICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBv
ZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVu
Y2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3Ry
aW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6
ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
IAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAg
ICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4u
N2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgp
CiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQog
ewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1f
ZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZl
NDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMy
NmQ4N2IyNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1Yzcw
ZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3
ZTEwYTE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGli
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3Zh
cmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50
X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0
YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oCmluZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNl
MTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmlu
YWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBr
ZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggMmRiYTAxOTUyOWE3M2QzZWI0YTI0YTBmNjExMjhmN2Ex
ODg3ODBlNC4uODdkNzg0YmM2NjUxOGZhYjI2YjM0NjYzYTQ2NDQwMDkzZGUyNzE4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBA
IC0zOCwxMiArMzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
R0J5dGVzKiBieXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0
ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkg
Y29uc3QKK0dSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0
ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFk
b3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3Bv
aW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+
ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAg
ICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
KyAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAg
IHJldHVybiBieXRlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcAppbmRleCA0ZTk0OWRmYWI5NzY1YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcwLi4xMjU4
NjJlNzJhOWY5ZDg2OTZjZTE2Y2FjZmY2YmY3MjA3YjQ1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWY8Rm9udD4gRm9u
dDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9y
aWdpbiwgSW50ZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBv
cmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRl
bnRpZmllcikpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9v
bCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBGb250Ojpj
cmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpP
cmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYykKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9u
dERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0
KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CmluZGV4IDc0NDIwMDRmMDBiNWRiYTI3ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjRjNWM4YTM5
NjMzYTA2NDc4OThiNTJhMzk0NTI1ZmIxYWZiMTJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xh
c3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNs
YXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBP
cmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBW
aXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9y
aWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5Zjdj
ZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4
YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250
RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFi
bGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4g
b2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIy
MywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlw
dGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAj
aWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRS
ZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0
aWxpdGllcy5jcHAKaW5kZXggMmNmNDQ4YmVhMmZhNmFlNGQ0N2Y5NjQwMDJiM2E5MDZjMDEyOTA2
Ny4uNjc1ZTI0YjQwYWM3YWFkZTc0MDg2ZjI0MmVhZDAxNTIyMWMwMjRmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBB
VkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGhleChwYXJhbWV0ZXJzLmxldmVs
SURDLCAyKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29y
ZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lF
QyAxNDQ5Ni0xMDoyMDE0CiAgICAgLy8gNy4zLjIuMS4xIFNlcXVlbmNlIHBhcmFtZXRlciBzZXQg
ZGF0YSBzeW50YXgKQEAgLTI1NSw3ICsyNTUsNyBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFy
YW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAg
LCBjb21wYXRpYmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SEVW
Q1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZv
dXJDQyYgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bnN0IEZvdXJDQyYgY29kZWNDb2RlLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0xNToyMDE0CiAgICAgLy8gOC4zLjMuMSBIRVZD
IGRlY29kZXIgY29uZmlndXJhdGlvbiByZWNvcmQKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGQ6Om9w
dGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1ZpZXcpCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFy
c2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlIERvVmkgQ29uZmlndXJh
dGlvbiBSZWNvcmQgaXMgY29udGFpbmVkIGluICJEb2xieSBWaXNpb24gU3RyZWFtcyBXaXRoaW4K
ICAgICAvLyB0aGUgSVNPIEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQsIFZlcnNpb24gMi4wIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCmluZGV4
IGFmNzVjNjJkMTE1ODBhZDAzOGQ3MTdiZTk0YjMzMWQzOWRkZGEyN2EuLmVkZmVjYjI2ZDg5NDY3
YTIzZDFmNTcxY2JjNWU5MWIyZmEzNDc4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEZv
dXJDQzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEFWQ1BhcmFtZXRlcnMgewogICAg
IHVpbnQ4X3QgcHJvZmlsZUlEQyB7IDAgfTsKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEFWQ1Bh
cmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0
ZXJzPiBwYXJzZUFWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlv
blJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRl
QVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0
IEhFVkNQYXJhbWV0ZXJzIHsKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IEhFVkNQYXJhbWV0ZXJz
IHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBh
cnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbnN0IEZvdXJDQyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRp
b25SZWNvcmQoY29uc3QgRm91ckNDJiwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29u
c3QgSEVWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKQEAgLTY1LDcg
KzY1LDcgQEAgc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJp
bmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBh
cnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZURvVmlDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29u
c3QgRG9WaVBhcmFtZXRlcnMmKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIy
OTIuLjVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1v
ZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1p
bWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1v
dmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6
Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkK
K01vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcg
bWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1f
bWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEy
NTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMy
NDFjZTAwNTZhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgK
QEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywg
VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+TW9kZWwoKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBV
UkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBT
dHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICBVUkwgbV91cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVU
eXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxN
b2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUo
KnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwp
KTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3
OTQxZDJlNWNjMWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZm
YjkwNTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qg
a1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZh
bHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAg
ICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAo
YnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBA
IHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZf
dCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0
NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90
IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBA
IHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsK
ICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3
IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9
CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50
KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVs
c2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0
MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJm
ZTdkZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZG
KFNoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwog
CiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNv
dWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJz
aW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVz
IHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZG
VG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2Zu
dCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJy
ZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNv
bnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNv
bnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQg
dG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRj
N2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUx
ZDZlMDI4Yzk3NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBv
ZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3Jt
YXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKaW5kZXggMTYxMWJhYWM0MzcwYjVmYzk4YTI5MjA3
NzIzNWQ0NWUwMmI1ZDBiYS4uZmM5YWE5OWE2OWRmYWU4OWU2NWIyYWIzYWY0ODkxNDA3Njg1ZmRi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMu
Y3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBh
dXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiYXZjQyIpKSk7CiAgICAgICAg
ICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMx
IjsKLSAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBs
ZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VBVkNEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAg
ICAgICAgIGlmICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOwpA
QCAtMTIyLDcgKzEyMiw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBz
YW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImh2Y0MiKSkpOwogICAgICAgICAgICAg
aWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7Ci0g
ICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlv
blJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRl
bnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlSEVWQ0RlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMsIGNvbmZpZ3VyYXRpb25S
ZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAg
ICAgIHJldHVybiAiaHZjMSI7CkBAIC0xMzcsNyArMTM3LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZv
cm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24p
CiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiZHZj
QyIpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuICJkdmgxIjsKLSAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29y
ZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuICJkdmgxIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5
YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5
ZWE4ZDFmODEwYmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTMyNCw3ICszMjQs
NyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJz
ZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3Qg
KGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJu
IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0
aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0
YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1J
TkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFS
ZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxp
emF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBA
InBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0
dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBAIC03NzAsNyArNzcwLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVkU2Vzc2lvbnMgPSBj
cmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0YSkgewogICAgICAg
ICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAgICBhdXRvIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVu
ZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04ODgsNyArODg4LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0
b3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBh
dXRvIHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZl
Y3RvcikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9u
c2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25z
ZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVu
dEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50
S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERh
dGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3Qo
KSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNl
Q2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25z
ZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rh
c2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3Vw
cG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNW
ZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRh
dGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
TlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBA
IC05OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Np
b25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAg
ICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhw
aXJlZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBl
bmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVy
LmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsx
MDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5
SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAt
MTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSBy
ZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVu
dEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0
b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYg
KGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKIAogICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxi
YWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFj
a0FnZ3JlZ2F0b3I+IHsKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJl
dGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBh
dXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJ
RC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2
NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5z
aXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRF
bmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkp
OwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwog
ICAgICAgICB9CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQog
ICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1
ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QuZ2V0KCkpOwogICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZN
b3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAg
ICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJ
ZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgp
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBh
Z2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3Jl
Z2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsx
MjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2Ut
PnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAg
ICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJ
ZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgp
IG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtl
eVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEw
ODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLmE1NGRmM2RiYWRmOTA0ZjQ1NDg0Yjhj
ZTViY2E0OWZjNTU2OGZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
CiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9h
ZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21w
cmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkK
IHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNv
bXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0Lmdl
dCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3Bh
dGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCld
OwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNr
cyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkg
bXV0YWJsZSB7CkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogCiB2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewog
ICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDFhNDNjN2RlZDI3
NmUyYzNlNWY2ZjQzYTM4ZjA1MTEyNzIwNmQwYTMuLmFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2My
YmExZDE4Y2ZlMzFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykK
IHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwot
ICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRv
IG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6
RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRh
LmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0
eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZm
MjQ3ZjAuLjMyYzVhNjY4YTE2YWU0OGVlZThjOWQzOGRiZmYxMzMwNWZkYWMwYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAg
LTIxNCw5ICsyMTQsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0g
ICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlci0+YXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjcsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAg
LTIzOCw3ICsyMzcsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gRGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVj
b2Rlcjo6TW9kZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5k
YXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIu
LjQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFj
ZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0
YmVkM2Q1MGMwNi4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNp
emU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlv
bih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQp
CiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihpbmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90
IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0g
c291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VE
ZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7
CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihD
R0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAg
ICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBA
IC01NzAsMTUgKzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0Rh
dGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdp
dGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVk
QnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91
bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcg
YXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2
ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOwogI2Vsc2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwog
ICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFu
IHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2Vz
IG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFy
YW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQg
Zm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRl
ckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7
CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNp
emUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQ
cm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIz
YzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFh
MzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQppbmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44
NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5k
ZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNl
OWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBG
cmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAg
ICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxE
YXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3
OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIz
ZjY4NGRhNWI1NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZv
bnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMu
LmNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEy
OSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYg
bGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGli
cmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGli
cmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4
IDY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4
NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0
YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hh
cm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0
RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZU
X0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgs
NyArMjY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXpl
ICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNF
KEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwCmluZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMuLmI3
NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBl
ZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUo
KSB9OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRl
U2hhcmVkQnVmZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNo
YXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3NjFk
NmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2Zj
NmYwOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hl
Y2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0x
OTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAg
IEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRm
YmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0
M2EzNTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQy
OCw4ICs0MjgsOSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklu
bmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
eworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwog
ICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0g
YnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdl
RGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUp
OwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3Jh
cGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIwMTU3
ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2OSw3ICszNjY5LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0
YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFz
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5k
YXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1Q
KCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEu
cGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCkt
PnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRh
RW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5
bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYy
OTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUx
ODAxZjFlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
Y3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJr
dXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2Ug
fTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50
KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdj
aGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAg
LTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEt
PmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3No
Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQog
CkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNv
bnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3Vw
UGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0
LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1
bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENl
bmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxv
YWQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJz
ZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9
IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQt
PnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQz
NDJhNDY0N2QyZjEuLjdiYjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1J
ZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxv
YWQpKSkKKyAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8g
cGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpKSkKICAgICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVm
ZDMzYTk5ZDQ2YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0
Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZv
bnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5n
ZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250
RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBi
dWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43YmM2
NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6
OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdm
Y2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudElt
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9k
b2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0
TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHAKaW5kZXggNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5Mi4u
YjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFs
aWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGlj
c0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxp
YyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZf
dCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVp
bnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
KiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
b09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3Qg
R2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0g
MHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJs
eVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVj
b3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFz
dXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUg
dmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6
ZVZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJp
YW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUz
LDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2Ugewog
ICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJp
YW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYg
YXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1i
bHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIs
IG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250YWxHbHlwaENvdW50
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsg
Ly8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlv
bnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4K
IAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9u
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3Ry
dWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgs
IGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0g
dWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6b250YWxHbHlwaENv
dW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVj
dGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7
CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBN
YXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIx
Miw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBo
SW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5
cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9P
ZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAyOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0
NDk0YWIxODAzNWNmLi4zZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5
cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEz
Myw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJV
bmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
aW5kZXggYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YS4uMzA0OTYzYTVk
ZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAt
NzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBU
YWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90
KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3Qp
KGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1
ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
ODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mCiAKIHN0cnVjdCBUYWJsZUJhc2Ug
ewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHN0YXRpYyBib29sIGlzVmFs
aWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBw
b3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5k
IGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBj
b25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWlu
dDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2
YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQx
Nl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihi
dWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwog
ICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFn
ZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3Zl
cmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFn
ZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAorICAgIGJvb2wg
Z2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVy
YWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFn
ZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZh
Y2EzZmNiZjkyZDFhLi4zY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBF
T1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhl
IGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRv
IHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJs
ZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5
IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkK
K2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0
YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAg
ICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVh
ZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbgogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBm
b250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3Ry
aW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7
CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERh
dGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMw
ZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJj
MmFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNv
dXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKQEAgLTU0LDggKzU1LDggQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJl
ZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAy
MjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi43OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEw
MzIzOGJmZDI4MmY3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBA
IC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZz
ZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292
ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxl
IDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29r
dXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNl
dHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZp
ZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQg
ZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwg
R2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wg
Z2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3
IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2
IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAot
ICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWlu
dDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlm
IChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2Nv
dW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25z
KGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3
IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpP
ZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxp
ZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVj
dCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkg
PCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVy
LCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUlu
ZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5
cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlw
dFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zm
c2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5n
U3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jk
c1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVC
YXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3Jp
cHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRh
ZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFi
bGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRD
b3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkK
QEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2Ny
aXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAg
ICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpA
QCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0u
c2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxl
ID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAt
MzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxv
b2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3Jp
cHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7
IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIs
IGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBj
b25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVm
ZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBM
aXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQog
Ci0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAg
ICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZl
cik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpU
YWcgZmVhdHVyZVRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAg
ICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAg
LTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3Rp
dHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZl
YXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwog
ICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYg
YWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9w
ZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwK
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFi
bGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRh
YmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4o
YnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYs
NyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6Omxv
YWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0
IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVu
VHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5n
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVy
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODlj
M2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQz
NGJjODdhNzgzYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyAr
MTA2LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJu
IGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3Ry
aW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNv
dXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3
MWM0ZWYuLmZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENH
Rm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVy
Owogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9u
dFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRp
bmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgog
ICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IDNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAw
YzE2NzRlYzMwNDQ5MzExMmQuLmY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODlj
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4
Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBm
b250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmlu
ZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3Vy
Y2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNh
aXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1
ZWYyMDY0ZTkzZGQuLjRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wg
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAg
IHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwCmluZGV4IDZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEuLjQz
OWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAg
IFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwog
ICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAg
RFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAgYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxl
Y3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlmMmYxMzBlMjU4MDk4
NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2Up
IHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAgICBib29sIGNhblNt
YXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2
b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21E
YXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21E
YXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEg
PSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXND
dXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNs
ZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVm
UHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNi
ZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5MDFhOTJiM2Yz
YzQ3ODliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03NiwxMCArNzYsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRh
KCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBz
ZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAg
ICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0K
KyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBj
b250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmICht
X2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7
CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAg
ICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMu
LmU1NjQ3MTIwMDE2N2EzZmJkNGU2ZjE3MDNkYjllZmViNmM3ZDQ0NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUND
TWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+
ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJ
Q0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1
Y3QqIGluZm8pCiB7CiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0
OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nf
c3RydWN0KiBpbmZvKQogICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0lt
YWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
fQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNl
dElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oCmluZGV4IGQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2IuLmMwM2Fh
Njc4MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9v
cmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQg
c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJ
Q0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAg
ICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0KaW5kZXggMzY4NzIyYTM2ZjU4Y2MwZTcyYWY4NzY1NWViYWU2Y2E1ZDRiOTc4Yy4uYTdmNDUw
MzIwZTkwOGM2YTFmNWYwZjg5NTYwOTJhZTI0Nzk1YTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTI0MCwxNCArMjQwLDE0IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilr
VVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0
UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxs
eTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBS
ZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAg
ICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0
cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAg
ICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJu
IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICBy
ZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpS
ZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTUsNyArMjU1LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWlu
c09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1
bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZl
ciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVt
SW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUg
OiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOWRiMGFiMzRiMjYx
OGEwNDAyYjBkMjQzZGM4NzA3YTM2NzgyM2RlMy4uZDlmNDhlZDFiMzQwNWQyZGVhOTc3OGMzYTZj
NTcyYmM1MzJmYjkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QKICAgICB0
eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQog
ICAgIHJldHVybiAwOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQ
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
bmddOwogICAgIH0KIApAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICAgICAg
aWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1F
VHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0
aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJ
bWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3Jp
Z2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygp
KQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02NzIs
NyArNjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKQEAgLTc0Niw3ICs3NDYsNyBA
QCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTc2MSw3
ICs3NjEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LAogCiAgICAgaWYgKCFbcGFzdGVib2Fy
ZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVj
dEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAyMTZlZGQ4NDc1ZTE0ODhkYjll
YTYxMGYxMjNiYWE4MTllNmIzMWZjLi5hMTUxNmFlMzRmODI5YmE3MmNhNTYxZDk1ZTRmYzk3OGI5
NTJkMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3Im
IGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJs
LnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3Jh
cHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3
Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOworICAg
IG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZE
RGF0YSkucHRyKCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZElt
YWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCkBAIC0yODUsNyArMjg1LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgbV9jaGFuZ2VDb3VudCA9IHdyaXRlVVJM
Rm9yVHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwsIGNv
bnRleHQoKSk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShp
bWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5
cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICBpZiAoYXV0byBhcmNoaXZl
RGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAg
IG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldEJ1ZmZlckZvclR5cGUoYXJjaGl2ZURhdGEuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRU
eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCkBAIC0zNDQsNyArMzQ0LDcgQEAg
c3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5n
JiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlw
ZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0
eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3km
IHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAg
ICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmls
XSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KaW5kZXggYTdmZTcyNTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4u
YjQ5YWQ3YzA0YTUyODE4MmE1MWI4YTNhOTg0ZDdkOTA0ZDYzOTc5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02
OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9w
YXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5T
RGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgp
KTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBA
IC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFz
aFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxp
emVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkg
PT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRU
eXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBA
IC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAg
ICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBl
czpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAot
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBh
c3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYs
NyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJv
YXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAog
ewogICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsCiAKICAgICBpZiAoTlNE
YXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0Rh
dGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01MDcsOCArNTA3LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVh
dGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFw
bGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAg
ICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlw
ZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0g
c3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
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
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
YXN0ZWJvYXJkV2luLmNwcAppbmRleCA3MzY1ZjAxMDk0NGE5MjZiMGViY2E5OTZiZGRhZTE0NDk1
MGY2M2UzLi5mNDk4NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMzZjczYzA3NGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyAr
MzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFz
dGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYp
IGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQgeyAwIH07CiB9OwpAQCAtOTc4LDggKzk3OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0
ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5
KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
LT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVt
T2JqKTsKIApAQCAtMTAzMCw4ICsxMDMwLDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFs
SERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAg
ICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JE
IHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAg
ICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBX
cml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3Jp
dHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3Jp
dGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3Nl
SGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQp
CiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
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
bHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3YTc3MDU3Mjhi
YjYuLmU4YmMzOTc5ZjkzZjQzZGQ0ZmZlZDNiZTA1ZTYxNzZkZDdhMzdkN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDEx
ICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsK
LSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBp
ZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7
CisgICAgICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250
aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCisgICAgICAgICAgICAg
ICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
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
Z2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1
MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4
bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGds
b2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAg
ICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2Fl
Y2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNl
ZDNkYmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2
b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVz
Y3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmlu
ZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBhZjgzNDIwNzIuLmViZGU3NTMwZWM4
NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcg
KzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUo
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYm
LCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERh
dGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8m
JiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9
IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRh
dGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXIt
PmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJl
ZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlk
NTY5YzU0YjA5ZDcyLi41NzdkNjU2ZTY3ZmNjYTQ2NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAK
ICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0
YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9h
ZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1
MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhh
N2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFj
ayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBt
X2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRj
OGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgp
PjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVz
aW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2Fp
dEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4
OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2
MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAg
bV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7
CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEw
ZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFl
ZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgx
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRp
b24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3
aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4K
LSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkg
fTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3
ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNw
b25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0
YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCks
IHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFl
ZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5j
b2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0g
ICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAg
ICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgp
IH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJv
ZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGU2N2UwNWJhODQ3OGE1ODE4MzBl
Mzk3MDY4YjMyZmIwOGQ5MWI3ZWQuLmU2NWIyZWE4MzhiMDgxODNjOTZiODMxMjBiMWZlZjE1NmJi
OGMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVj
b2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUo
KSk7Ci0gICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0
LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7
CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3
X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi4yOWY3
MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODliNzE4NWUwM2JmODk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBz
dGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkw
MjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLmU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5
MmIyZDgwMmFjOTA3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKQEAgLTM5LDE4ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBT
aGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
U2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29w
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZl
cihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZm
ZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJu
IG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAg
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
NDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi5lOTNmZDg5ZTdlZmMwNzZhOWI5MTg3
NzdiZDYwOGM4MzQ0Yjk0YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
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
bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIg
PDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIg
PSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEp
OworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZm
ZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAg
ICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVs
ZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUo
bWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCkBAIC0zMDE3LDcgKzMwMTcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
cwogCiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzAzMSw3ICsz
MDMxLDM1IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSCiAKIHN0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNj
NWI2Li5lZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3
IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFz
cyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjsKIGNsYXNzIEN1cnNvcjsKQEAgLTc2MSw2ICs3NjIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2Rl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
aW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjQ1ZDliZmFi
NzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6
Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0
YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEp
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBz
ZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAg
ICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigq
YnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmlu
ZGV4IDI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEuLjhhZWY0YTUwMWRh
ZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVh
dGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVh
dGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uYzkwZDNk
ODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMTAzLDEyICsxMDMsMTIgQEAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRh
KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29u
c3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50Ojpj
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQor
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4
IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmM2YzJhMDZlYzk3ZGRm
MGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TRmlsZVdy
YXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCkBAIC04
OCw4ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wg
aGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0lt
YWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
RW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmlu
ZGV4IDY0NDkxZTE2MmVjNmM1YmNmYTNmYzRjYjI0OWY4ZDljY2I2MzliMjEuLjFiOWI1NGI2Mjcx
ODE0OTUwOGY5MDI3YzgzYzY3MzIwNmJhODI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5j
dGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBm
dW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMw
MzA3OTFlOGQ0ZTE1M2MuLjk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNF
bXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVy
R2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVX
cmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFs
aXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggMDRjZmQwMjlhYzg0ODNhN2MzMjFiYTU0YjExODBjODZmYzRmZDc4YS4uM2U5MjNjZjY0
OWQ5NmUzNGVkMmE1MWY5MTcwZDViMTc0MWZhNjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCAtICh2
b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdo
bGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQu
dGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBI
aWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGln
aGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGln
aHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3Jv
dXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3
OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdo
bGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6
WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKQEAg
LTIyMjMsNyArMjIyMyw3IEBAIC0gKHZvaWQpX3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcg
KilpZGVudGlmaWVyCiAKIC0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RS
ZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
LCBuaWwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJv
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOS4u
NmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3
ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0
aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwog
ICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9k
YXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkK
LSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAg
ICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJh
YjYxNmIxZTY0NTk0NGVlZi4uNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBp
ZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1f
d2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4u
YmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2ZGE1ZjViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAg
LTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25l
bnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJyICE9IEF1ZGlvQ29tcG9uZW50RmV0
Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25zKSB8fCAhcmVnaXN0cmF0aW9ucykK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJl
Z2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRD
RihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAg
ICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKKyAgICAg
ICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCAyZTEwZGE2NmFiZjY0ODcyZjkxM2MxMzA1M2EyZWI3ZGI3YTdmYzJjLi4xMWNjNzUy
OGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEwNzQ2MmVlNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBp
c0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmpl
Y3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0
eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBl
cyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NzcsNyArNDQ3Nyw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVu
YW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAg
ICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgp
IGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTA4LDcgKzQ1MDgsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVh
bDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewot
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0
YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU2MSw3ICs0NTYxLDcgQEAgTlNB
cnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRp
b24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAg
aWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5k
YXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJv
cjpuaWxdKTsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RE
T01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5IHBhc3RlQWNjCiAg
ICAgaGlkZURPTVBhc3RlTWVudVdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbcGFzdGVib2Fy
ZEZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkpIGRhdGFGb3JUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBp
ZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVy
LmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+
Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShwYXN0ZWJvYXJkTmFtZUZvckFjY2Vz
c0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkpKTsKICAgICAgICAgY29tcGxldGlvbihXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBmNDAwMGE2YjcxOTEzNWMzNDNiNGNkMDljMDIzYTY4ZjJjNWU3ODVlLi5lYWY1
ZWVhOTgyM2NjNGYyNTllYWQzZTA3ZDA5MDgzMWQ5ZDNmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTMzNSwxMCArMzM1LDEwIEBAIERvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNy
ZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1f
ZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQ
b29sLCByZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFJlc291cmNlKHBhZ2VJRCwgc2Vzc2lvbklE
LCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlKHJlcXVlc3QuaHR0cEJvZHkoKSkpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGF0
YVJlZmVyZW5jZSYmIGRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGJ1ZmZlciksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IDg2ZjFiMzA0NGZjODc5ZDA5M2ZlZTk2Y2VhNmViMTBhNTM4NzY2MzQu
LjcwYjU3YjU0NDUzOTI2NTNiNDI2YWQ3ODhmYjExMjI1Yjc5MmFkOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBA
IC02NSw2ICs2NSw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51
bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdl
YnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5n
UGFnZSk7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVE
YXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggMTk1YzNjODIyMDg4YTc3YmI5ZGYxNjc4NTAxMGY0MTU2YzZj
YzY2MS4uZWQ5ZDgzMzdmNDc0Zjc3OGVmNzZiMTk0YzY5MjBhMTE4NGYyYTQwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDY5LDcgKzQ2OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlz
Q2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRD
aGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNl
c3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA4OTVlN2I4Y2Q1YjkzOTkyNjQ5MzYxNWQ4Zjc3NTZjZjU4
N2E4NjU1Li43MDdmZDJkZTdiN2FjMGIyNjJmZDBmNzY3M2MyODlkODgyM2FiZTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYzNzcsNyArNjM3Nyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvCiAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5yZXF1ZXN0UmVzb3VyY2UoaWRl
bnRpZmllcigpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCAwZjg4YmI1Yjc5ZWJjNmZhMmE5ZTg5NjU0MzMxNGYwMjAyOGY2NWQyLi45MDIzN2FlNTVmZjkz
ZGU1Yjk0NzkxNjk2ZTEzOWFiMTVlMzg3MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFz
cyBWYWxpZGF0aW9uQnViYmxlOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9r
ZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVy
KCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAK
QEAgLTEzNzUsNyArMTM3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVx
dWVzdChEb3dubG9hZFByb3h5Jik7CiAgICAgdm9pZCByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6
OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJv
eHkqKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYp
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiYpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0
ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEg
PSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAg
ICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fc3luY0Rh
dGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jl
c3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAppbmRleCAzYjA0YTgzM2RiZTBiNmI2NmVlMTRkM2MzMDBmMzA2ODcxOGJmMmNmLi41YzhlM2I5
MmYwODk5MmVmNGRhZDYyYjE3N2E4MmYzMTYwOGJiYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg4LDcgKzE4OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29s
IGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlz
Q2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFu
Z2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZmFj
OWU3ZmI3OGJlZTBmNjI5NDU2NzJlM2JiNzRiOWUwNTIwZTMwZi4uYjY4NGUxYzk0ZWFjYjY3Mjhi
YjEzMDY4Y2I2OTUyMjcwMWZhOGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRD
aGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFy
eShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGlt
YWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDEyZjNh
MTVhNDNiOGFjNGQxNTFmZjMwM2MzYzVmNzdkMTM1MzBjYmUuLjk5YWVkMDM2ODhlMGU1YzYxNzQ3
OTBmZGRkOGQyNTBlOWFiNzBhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzg0Miw3ICszODQyLDcg
QEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2Vu
ZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0
YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBm
b3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERv
Y3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAg
LTY2NTAsNyArNjY1MCw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01h
dGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFk
YXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAg
ICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
YnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAg
cmV0dXJuIE5POwogCkBAIC03NjIzLDcgKzc2MjMsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdp
dAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAg
IE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5n
IiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1l
IGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0
IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9
OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0g
fTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBj
b252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9u
SGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQppbmRleCBkZDgyOTUzYjkwZjRmMTNiZGI4Y2E3NmM0MjhkMGMwNzJjMGM1
ZGI5Li43YThmYWNkMzE3YTA2Mzk2ZDYzYjhkZWVjNjU3MWU1NTEzZWM0OTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsx
MzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6
OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGU0NDI3ZTJjMjBkZjFlYWNhYTQxZDAy
MzU3ZTg3ZmIzYWVjMTcwZWUuLmNhNmI4NzNiMWM4M2Y1YTUwN2I4NWVhMGZmMzFjZWRhZGQxYWFi
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBi
ZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
QEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rp
b24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29y
ZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkg
eyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5k
ZXggYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOC4uZGY4ZDg4MDQ3ZmY2
NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5n
ZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSld
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAgIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxl
ZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdE
ZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpt
X2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRl
SGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBp
biBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0
eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAgIHBh
c3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM1MzYw
NjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAuLmMzOTgxMWVhYzk0ZTI5NWUzODMz
YmZjZGQ2YzE4MmE0YTMxMDE5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBj
b25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2Up
LCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2
LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJv
YXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRl
bSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0t
PnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFz
dGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggMzFlMTM5
NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NC4uZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4
ZDljNThlODgwMDdhMTM0MDUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hh
bmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFz
dGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2Vi
UGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUyNWM2ZTdh
MGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLmEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMx
ZDNmY2ViNDJhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0
aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBk
YXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNf
Y2FzdDxjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCkBAIC03Miw4ICs3Miw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlCiAKICAgICBS
ZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9
IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3Vv
dXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVl
c3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJ
KE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1
bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0
ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUp
OwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk4YTZlMmU3
YjU3ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRlMDUwOTQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBT
aGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi44NzI5OGIzNzI1
MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQg
bm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAg
ICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkZjI3OGE3ODg0YmFjODlkNWQxNWY3ZGM2NDlk
NjZkODA1MDRjMWY0Li5hMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJiZjhmOWYxMDUyNWQ4Y2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxX
cml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+
aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCpt
X3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA0YzQ4ODk3NjAxMjJhZjc2ZjAzYjgwYzRmODY2MmExMjNmNGQ5MTdl
Li5lMTZiMGNmMzgxODA2MTEwZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAK
ICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAg
ICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2Vh
MDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVz
b3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291
cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1l
KCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmluZGV4IDYwYzIwN2VkMGVlYTgzNmI0ODcwZGRhN2M2YmIzMGExNDU0Y2E0OTcu
LjRjNjY2ZGQ0MGQ1ZTlkNDUxYTFlMDZjMTFmZDA4MDAyN2E5OGIyYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVz
KSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWlu
dDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNo
YXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5h
bWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikp
OwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRp
dmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hh
bmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJl
dHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1
ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAtMzI0LDcgKzMyNCw3
IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVk
QnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwg
cGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUp
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyMDBiNmMwMTU5YjY4OGM3
MmEzZmFkZmJhZTBhNjk0ODMxYjkzNmUwLi4wNDVkNGNiODlhOTY2NGEwOGUxYjgxYTA1MzAzNWRj
NWQ5ZDBjNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3
IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVS
TChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBp
bnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRG
aWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
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
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZTQ2N2VmZmZkNzk0N2I3OGE0YjgwNzBk
NDg4OGIwNmFmOGViN2RjNS4uMzlhYjc0OGUxMjY2ZDU5YjdjNjIwYTc3YzMzOTgzOWVkMTIxODE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAg
IGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2
ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0
aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNm
ZjMuLmM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIxNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNl
OWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFkODFmZmExOWQ5N2YwNGVjN2NjNTc1YjNlY2U1
ZTg4ODE0NDBiMzkuLmUzNTFlYTk5OGMwN2U0YjMwNDZmYzkwZDI2NDVmYWIzZTZkMGQ4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDE4OGVjNTAwNDUwNzdkNzhi
MDEyMGE2ZGFmYmIwNGZiNzkyNzY0NjQuLmEzZTNjOTMxNjhkODkzNjUwMmFhNmU3ZjQ1NGU0ZTU3
ZWQxYjEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShw
YXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRU
eXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZv
clR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3
ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEz
NDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRiLi5jNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2Zh
NmI3ZGFhNmNjM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCkBAIC00NjMsNyArNDYzLDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZh
dGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2Zh
NWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQog
LSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5
aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJz
ZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5w
YXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtf
cHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgp
OwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uNWIxMGQz
ZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaAogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJl
c3VsdC5pbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDph
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRl
czpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAg
ICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0
VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGIwOGMxZDIxY2Y5ZjA0ZTYx
MWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUxNmM0MWE5MGU3ZmE1N2RhZDk4OTFkNDlhMzM5
MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29k
ZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAq
KWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2Uu
Z2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5T
RGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlw
ZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewot
ICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAg
ICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUg
PSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2Ut
PnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1l
KCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25z
ZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVz
b3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JL
ZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZv
cktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVU
eXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXld
OwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAt
MzY4LDcgKzM2OCw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29k
aW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZm
ZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIHJldHVybiBl
bmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBj
b3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8g
Y29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYw
NGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5
U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1v
cnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8
TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEy
OTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcg
QEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFt
PiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3Rt
KTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVM
T05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZl
LmNwcAppbmRleCA4MTU3OTk2MTA3NjdlMGJiOWFkMjI0NTY3ZDcyNWNkM2NkY2RiMWZmLi5iM2Ey
YzRjZmViM2U4ZjgyYTA1MGEzOGY1NzI1OGQ5MDZkMDZiZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2
ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRh
dGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMx
Li5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFiMWI3YmRhNTQx
ZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4MDliYTY5N2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGlu
ZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAg
ICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAg
ICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1
YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3
ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJ
U3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VO
RVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
LT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJE
YXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJl
cHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5
OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNv
dXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQog
Ci1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+
IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRh
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1
ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBj
MzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAt
MzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVz
b3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA3MmE1NmRjNzc3MDM2NmQwMGM1MzM1NWRkMzMzNjRiMDM1MWY4
MDc3Li5iMGEyYTdjOGZhOTc2YWY4ZGQ2YmQ3MTJlYWVkMWMwZDA0MDcwNWZiIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAy
MDIxLTEyLTExICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Njg5My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgy
MWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uYmFhZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1
NmJkNGYwNTIyYzIwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQzLDM4ICs0Myw0MCBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
Zk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2Zp
bGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NF
UlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29u
dGlndW91cygpKTsKKyAgICBhdXRvIGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1Rf
R1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9
PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIoKTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVy
LT5zaXplKCkpOwpAQCAtODMsMTIgKzg1LDEzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
bGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBF
Q1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpA
QCAtOTYsNyArOTksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0
YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwogICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwogICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwogICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CkBAIC0xMTEsNyArMTE0LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAw
LCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChX
VEZNb3ZlKHZlY3RvcjIpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
c2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwpAQCAtMTUxLDE1ICsxNTQsMTUg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0g
bWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRp
YnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMs
IGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3RE
YXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCiAgICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OworICAgIGF1dG8gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFT
U0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKICAgICBj
bG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1
LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwzMCArMTc4LDMzIEBAIHN0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAg
IFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1
aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScs
ICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAn
aycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKICAgICBidWZmZXItPmFwcGVuZChXVEZN
b3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRv
IGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdl
dFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAg
ICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTAp
OwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlq
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1
ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIo
Z2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCks
IGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwg
ImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7
CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNr
QnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAg
ICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7Cisg
ICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CisgICAgRVhQRUNU
X0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCks
IGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0
YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAtMjEwLDE1ICsyMTYsMTUgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0
byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBF
WFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5h
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywg
J2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9
LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2Mn
LCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtl
QnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAg
ICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIy
NGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcyOTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMz
OWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZp
bGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQ
YXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446966</attachid>
            <date>2021-12-12 21:54:47 -0800</date>
            <delta_ts>2021-12-13 00:31:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233030-20211213165434.patch</filename>
            <type>text/plain</type>
            <size>449417</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkNjBiOWJiMjJiNTU2
ZTZlOWVjM2FhZGU1NmIxNzRkN2FmYTI0YS4uOWZiOTBiMjY1MGEzMmIwZmU4NjU4Nzc1ZGIwNjg1
NzcyZTkwYWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4OSBAQAorMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNv
IGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2ly
YWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAg
ICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxk
IGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAg
ICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdo
ZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21l
bnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0
ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBk
YXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAg
ICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0
byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYg
dGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFy
ZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVz
ZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBi
ZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisg
ICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVk
QnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVu
dGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRo
ZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25z
IHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4K
KyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5
IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNz
OyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2Ug
aXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9y
b3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5
LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBj
b21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJ
IHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlF
eGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJ
bmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAg
ICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAo
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Rv
Y3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
OjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVz
ZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRh
Lmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9L
ZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1
b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFz
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BO
Ryk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhT
ZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2Vn
bWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5l
cmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjpp
c1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RN
YXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6Oklu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5
UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0
cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhD
b25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6
bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1Zh
bGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRl
UHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFn
ZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1l
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3Zl
cmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6Omdl
dFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVy
ZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9v
a3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRh
Ojpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUND
UHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0
cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAg
ICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMp
OgorCiAyMDIxLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAK
ICAgICAgICAgU2hhcmVkQnVmZmVyIHNob3VsZCB1c2UgV1RGOjpGaWxlU3lzdGVtIHdoZW4gY3Jl
YXRpbmcgZnJvbSBhIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVmZDQwZGFhOWMzNTNjMmM1NDkwN2Y5ODdm
YWMyN2E3YzJhOWViZS4uOTlkYTJjNzhhMjc1YjgzNWE4NDUxYjU1MWIzYTdhYjBhMzVmZTAxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMzUgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMw
CisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hl
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFk
RGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpi
dWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5z
TWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0
YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVv
RnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTExICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vbWVudHVtIEV2ZW50IERpc3BhdGNo
ZXI6IFRhaWwgZnJhbWVzIGFyZSB0aGUgd3JvbmcgdmVsb2NpdHkgaWYgbW9tZW50dW0gZXZlbnQg
ZGlzcGF0Y2ggcmF0ZSBkb2Vzbid0IG1hdGNoIHNjcmVlbiByZWZyZXNoIHJhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA1NWU0YzE4YzRmNGYxMTJmNjg3MTY1NjQzMGM3NGY5ZTAy
ZDZiOGY1Li5iY2YyN2IwOWFkZDU0MGFjYmY3NzQ0MDJhMDE0NTY3ZmZmNDdlZDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTEtMjUgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVl
IGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToK
KyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJG
b3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAg
ICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRT
b3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3Jl
YXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgor
CiAyMDIxLTEyLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgcmVkdW5kYW50IFN0eWxlUnVsZTo6VHlwZSBlbnVtCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggYTg5NWM2NmMxZjE5MzdiZmE4OWQyNjI4ZDBjMGI5NjA5MTBhOTZjMC4u
ZjFiZTM1MDZhOWIwNWIzNGNmNWU1OGYzNzFiM2M2MjY5MDU2MmRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlT
dHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3Vy
Y2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0x
Mi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEFk
ZCBhIHN0ZDo6bnVsbHB0cl90IGNvbnN0cnVjdG9yIGZvciBSZWZQdHIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZElt
YWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMz
ZDRlLi5kZmFjM2E5NTQwN2YyYjM3M2FhODhkZmUzNzA3ZjJiOWJlZWFhZjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYy
ODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uOWI1OWViNWNjNDk1N2YwMzM2Njc1
ODJlODY1M2FjMDc0ZmU4ZjM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
IAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5k
ZXggZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uNjliYzNkM2EwM2Nl
NDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAg
ICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+
KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6Omdl
dDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRl
RGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsK
KyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlw
ZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051bGwoKSkKICAgICAgICAg
bV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChhdXRvIGFycmF5QnVmZmVy
ID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAgICAgICBtX2RhdGEgPSB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZl
ci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICAgICAgbV9kYXRh
ID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9Owog
ICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogewogICAg
IGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFya3VwVG9T
YW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAg
IGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4obV9k
YXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nh
bml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4LDkgKzI3OCw5IEBAIHZv
aWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2Uv
cG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7
Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Piht
X2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQorICAgICAgICAgICAg
YnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4o
bV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gdXRmOEJ1ZmZl
cihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBD
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6
c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9hdFBvaW50Ojp6ZXJvKCkpOwot
ICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0Rh
dGEoImltYWdlL3BuZyJfcykpIH07CisgICAgICAgIG1fZGF0YSA9IHsgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdlL3BuZyJfcykpIH07CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgK
aW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMmRjOWQ1MDBm
MjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEzMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsMTEgKzM0LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJs
aWMgQ2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9u
SGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNz
IENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQs
IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMw
MjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uMjkzZjUyMzBkMGQ3NzEyM2Ri
MTMwYjAxNjkzNjk5ZmJhZmY1NGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJl
YWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAi
aW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJ
SW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFj
YTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMTU3YzVmNTJjMDI2YmZhYTk3NjRl
Y2QyNTA0MjNiMTVkMTg2MzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3
MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxC
b2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQg
PSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAg
IH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
Y29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVz
dWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRl
eCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi42ZTVjNDU2NGQ1Yzc2
ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcApAQCAtMzAxLDEzICszMDEsMTMgQEAgdm9pZCBET01DYWNoZTo6YWRk
QWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHIKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9u
c2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSk7
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
IHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zODUs
NyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS0+bWFrZUNvbnRpZ3Vv
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
NGI1MzlkM2U2NzFlNDNjZTZkYi4uMzdiODM4NmE3OGFlODc1ZGMyNTYzZWJjYjJhNzg4ODVkMzBi
YWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpy
ZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEo
V1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUo
cHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9t
KCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNv
bnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsK
LSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29u
dGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9y
bURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAg
ICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZv
cm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVF
cnJvcik7CkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZm
ZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICByZXR1
cm4gdGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmI5
MzQzOTJhOTAzZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1
bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBj
aHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9j
b25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTQ0MSw3ICs0NDIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90
IGJvZHlTaXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAg
ICAgICAgIGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAg
fSwKLSAgICAgICAgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAg
W3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAg
ICBpZiAoaXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAg
ICAgICAgIGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4
ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1YTViYi4uMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2
YzZhZWI1NDdhMWI1ZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVh
bSgpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25z
ZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShS
ZXNwb25zZURhdGEmJiwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4
NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uNjEzN2MyY2Y2ZmY0N2EzNjg0MGYx
MWI5NjZiOWU1MjU4NzFkODE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkp
OwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBo
aWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
aGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAx
KTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJk
OWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uODNiOTVkN2NmMDA3YWE1NGZi
ZmUyMzRiN2Q4YjFlYjhlMTk5NjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00Niw3ICs0
Niw4IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQx
NTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyCiAKIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7
CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMmEyYzFmYzMy
OTU4MDVkNTJmZDU2YWYzMGI0NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNj
MWExYTJlODRkZGNhN2M3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxs
LCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRF
bmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVu
Y29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAg
ICB9CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
SURCS2V5RGF0YSYga2V5KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtl
eShkYXRhLCBrZXkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNv
bnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQw
MTcwNjdhNGY0MjQuLmFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXpl
SURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+
Jik7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURC
S2V5RGF0YSYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktl
eURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNl
MWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAg
ICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNh
Y3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0g
c2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxv
YiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0
aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBh
dGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0
LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUg
aW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5m
by5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRo
KGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2Ug
Zm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYg
KCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVh
dGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07
CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
aW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5
KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtl
eSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAt
MTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlz
dHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5z
YWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9i
amVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAg
IFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBi
ZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1v
dmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQt
b25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUg
c3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4g
YW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtl
eS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAg
aWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwo
KSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1
dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBl
ckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIg
SURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAK
ICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5
VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25l
IGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5n
ZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2Vy
S2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3Mg
fTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkg
PyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwor
ICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAg
ICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEw
MzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVu
dHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7Cisg
ICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsK
ICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1
ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAg
ICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsr
LCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
YmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhm
ZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2
NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFk
eVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYg
bWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRh
dGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBt
X3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRl
eCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li5lNzllYmRiYWM0MDgz
ZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQmIGNsaWVudCwKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNz
YWdlcykgewogICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEo
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9
LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmlu
Z0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIx
Zjg5ZTAuLjc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQog
ICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6
OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUo
KSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRV
cGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEz
MDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1v
ZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVD
b3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKaW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdj
MDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBA
IHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1E
YXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVh
dGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAg
ICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2Zi
ZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThm
YWVhODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVi
bGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIg
JiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAg
ICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAg
ICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1Rv
cDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcp
IHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9T
dHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRp
Z3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7Cisg
ICAgbXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVm
ZmVyOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFi
bGUgU3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxib29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAKaW5kZXggYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIwYzNhOGM2OWE5YzMx
ZC4uM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkwMDdkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBD
U1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAg
ICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50
PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ2Vu
ZXJhdGVkT1RGQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
b3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0
YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBT
dHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29s
PihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZv
aWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9
IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1t
ZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5n
OwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2lt
bWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPiht
X2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRl
TGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmco
KSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1f
aW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJm
YmIyMzEyM2IyZGQzYTU3YTE3MjguLjZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2
YTA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBD
U1NGb250U2VsZWN0b3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcg
KzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNW
R0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRp
bmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1v
dGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBh
IHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNm
NmE5NzMyZjNlZDkuLmY1YmYyYjcyNmU2YWU5Njg5MzUzYzBhN2UwOGI0NWVmZGE1ZDkwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0
IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsK
ICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwog
ICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYp
CiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDI4MzFjZDNmYTljNmE0ZjlmZjlhOWEwZTI1YzNiNDJlNTJkMWI2NGQu
LmNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAxZjE3NGY3MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0YWNobWVudElu
Zm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVu
dChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjAzMTM2ZmZjZjFmNmIzN2U2YjA3YWI2MjMyZTYxZjY2
ZGVlNzU4Ny4uOGRhOWZjYzY0MTZiNjcyMTdkMTc0OWViYjg5NzgwN2U0NzYxMTEyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2Ns
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNz
IERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0
Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC01MzgsNyArNTM5LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSos
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9u
ZUltYWdlcygpIGNvbnN0OwpAQCAtNTc1LDcgKzU3Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhF
bGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlw
ZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5n
PiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXRE
YXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTYyMywxMiArNjI0LDEyIEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9u
SW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhU
TUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNp
YmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQo
TlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgog
ICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2
ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5
ZTk5OGY3ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlm
aWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4
IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjFkOTdhY2QzY2M3OTE2
MWIwYWM1MGM0YmY3MGNiMTUyZmMwZjQ4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCkBAIC03OCwxMCArNzgsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAK
QEAgLTEwNSwxMCArMTA1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRS
VEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hp
dmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJl
c2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIx
YmZhMjUuLjc0ZmU4Mjg3ZThjMzkzYmUxN2E2NzY2NTM4ZDlmMzRhMDkwYjMzNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6
OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChG
aWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxv
Yjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZp
bGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1
YjI0ZDkwYmI3Li5lN2EwNzFjYTQwMzllMDFmNDhkMGI0OTk1MDFlZDY0ZGU2MjZmMGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJm
N2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcw
NDk5YzJmNjFmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAg
YXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJp
YnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7Cisg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVy
IGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVj
dGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12
b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAg
ICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwog
ICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5
cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIK
ICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxl
bWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdl
YkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRl
ckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdl
YkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7
CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFs
dCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIw
MSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYx
ZTM3ZTNmMy4uM2M1ZTU0MzI1YjlmZTIzNTY3ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3
ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8m
IG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBs
YWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAg
ZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxl
V3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBu
b3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNG
aWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2Us
IE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAg
ICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNT
dHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAg
ICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVz
b3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIzLDcgKzIzMjMsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFy
RmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRi
Njc5ZTIyNzkuLjQ0MDU5YmU1YWU5ZTgxZGEzOWQ2Mjg5MjAxZDhlZDQ5MTU5NzM1MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBz
dHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7
CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAg
IFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtMzA5LDcgKzMwOSw3
IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYg
ZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVy
KCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlm
aWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNF
bXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAK
LSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1h
Z2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUo
bmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBv
YmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7
CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAg
IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNl
LT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsK
KyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwg
cmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDog
YXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFy
a3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMg
c3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBB
bmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hv
d01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQy
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFz
SFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBN
YXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5k
YXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3Vw
QW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAK
IHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERv
Y3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRB
cmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4
MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFj
ZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21V
VEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNv
dXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVD
b250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgp
LCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJr
dXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50
LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0K
ICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUo
ZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNo
aXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDcgKzYxMiw3IEBA
IGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZl
ck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Myw3ICs2
NTMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MzMsNyArODMzLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAzMDM2Y2QzMmQ2Y2Q4MzJjMjIwMjgz
YTg0NDVhODk5YTVhNjZjYTNjLi5kZjA5MTlmNzVhY2Y3OWE4MzkyODMyMTE5MGM1Y2IyYmFmNzQ3
ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtQ29weUZvbnQoKQogICAgIFBhc3RlYm9hcmRC
dWZmZXIgcGFzdGVib2FyZEJ1ZmZlcjsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLmNvbnRlbnRPcmln
aW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcGFz
dGVib2FyZEJ1ZmZlci50eXBlID0gbGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCk7Ci0gICAgcGFz
dGVib2FyZEJ1ZmZlci5kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkp
OworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmb250RGF0YS5nZXQoKSk7CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQnVm
ZmVyKTsKIH0KIApAQCAtMjUwLDE1ICsyNTAsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2Rl
RnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
ICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVu
dCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1
dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAg
IGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBG
SVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJv
YmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2Yg
dGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0
aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdo
aWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5NDA1
NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1
OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
OjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBw
ZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUs
IHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5n
KHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVE
b2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29u
c3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQ
YXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsK
ICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRl
bXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVm
ZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAgCiBi
b29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7
Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVU
ZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7Cisg
ICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0g
Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1Jl
ZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxk
IGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGlu
dG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVu
dCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGlu
Zy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMu
LmQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTAzLDEw
ICsxMDMsMTAgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2Nv
bnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCiAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0ZTNkYWYxYWRlNDczMTg3OTViYWJhZjg1MmMy
MzYyYjM5OTQ5YmRkLi5lNThiY2MyYWE3ZjgxNGQ5NzdmZjdkOGYyNjIzYzM3ZWNiYTdjMWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0
QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIg
PSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVU
eXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAg
ICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUx
YWVlMTQyODc0NTlkMDY2MTIuLmEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdmODE2N2EzMmJlMjM3Mzcx
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMywxMiArMTAzLDEyIEBAIGJvb2wgSW5zcGVjdG9yUGFn
ZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50
KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIElu
c3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0
aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUs
IHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCBy
ZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0YzBjMGRhMWMzMTcyZGQ0
MmNhZTZhOGNkMjFmN2EuLjk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRiMTk2MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTIzMyw3ICsyMzMs
NyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAg
ICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZl
ci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcAppbmRleCA5NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhLi5kMDk2
MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5
LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJl
cXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5m
cmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVl
c3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxz
LCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2
MDNmZDA0Yjc0YzNlYzhjMGU0OWM0ZjEuLmZkZmQwZWFhZjNhNTAxOGQ5MDBiYTFhNmQ3YTQ4YWU1
NzMyZjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MTYwNSwxMSArMTYwNSwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hp
dmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJU
KG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICpt
X2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFp
blJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNl
LmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5S
ZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsK
LSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2Uu
ZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRh
KCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgogfQpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNo
aXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3Rv
cCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdl
dCgpOwogfQpAQCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDUxMjI3Yjk2ZDdkMTdj
YTA3ZWUzYjdjZmY0MTYyZjNjYmUxYTk3NWYuLjZiZDMyZmMyZWNmNDZhZjdjZDkzNzlhOWQwMGM5
OTExNmViN2E2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNo
ZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVu
dEZpbHRlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVh
ZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC0yMzUsNyArMjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291
cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hp
dmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVE
YXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxv
YWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAt
NjEyLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUo
V0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNo
aXZlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5k
aWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGMxMGQ1YzFkYmViZWYwNTUyODQzZGQ5ZmMwYTUzM2RkYjQ3OTNhNGIuLjA3NmYzN2Rl
MzI1OWEwM2MzODdhMWUwZDJhZmNhZWQyZDgyNTliMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUo
KTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQg
aXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VM
b2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGZlMzJkOTRlNDI4NjU5ZDVkNjFkYWJhNzIx
OThlYjE5NTliYTI1ZjYuLjBkYWY0YzdhYjYwNTliZDQ3YTdjYmJkOGM4MzE3MzRjNGJiMTAzNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzgsNyArMjc4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2Vz
KCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDZjNWVlM2E5YjMxYWU4Yjg0
ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYuLmU5MWM4ZjYwZDNhOThhOWViOGRhM2NlNmI0NGZhZDJi
YzNlYjU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3
ICszMTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBj
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRh
dGEpCitSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQo
KSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVy
bCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAg
ICAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwg
cmVzcG9uc2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1l
LCBuZXdSZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVz
dGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0
Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZl
dGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZjYWUwMjBlMmYzYWMuLjlj
M2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsK
IGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDog
dWludDhfdDsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNI
SVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2
ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3Im
LCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9s
aWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUg
PSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQg
Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcx
NDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLjJmMmU4MmMyYjE3ZjNjOTRkZWJmMGE2YTQxOGY0
NDMzZTRhYWJkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtMzM0LDEzICszMzQsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgIGlmIChtX29w
dGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1
ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwg
ZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBp
ZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAKICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwpA
QCAtNTcxLDcgKzU2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZl
ciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29u
J3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBn
aWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0g
U2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjcx
OTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMt
PnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpy
ZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRh
dGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXgg
ODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2ZWZkMjBlNDk2MzAw
Y2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2
MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlm
ZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEo
KSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0
ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVz
dFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9m
IHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUg
b25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3Qg
YmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZhMzY4OTJlZTYuLjcy
MGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApA
QCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxl
VVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2Up
CiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9m
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNl
IHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJl
c291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCku
Y29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVx
dWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1h
eWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXli
ZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9h
ZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3Jp
Z2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3Rh
dHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsg
ZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4g
aW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNr
IGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAgaWYgKGdldEFw
cGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNlKSkgewogICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2Ug
ZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAgICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
CmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4ZjY2M2IyOWYuLmRjODU4ZmRk
NmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0
Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBs
aWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5
LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZh
bGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
LSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwotICAg
IHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFj
a0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMw
MTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3
YTA2YjMxMWU1MThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOTY5NmRlMTc2
ZDE1OWIxMDc2NGJlYzM1MjQzZWRkZmNjYWMwZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTEx
MTMsNyArMTExMyw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBT
dGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNp
Z25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5J
bnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hl
U3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAg
ICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQo
Nyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRh
YzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQw
ZTIzYzA0MzliNmU2OGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11
c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9
IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJl
IG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFy
CiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWlu
IHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byBy
ZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJl
c291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJl
c291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rp
b25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAg
ICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9u
IGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2Ui
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3RE
YXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAg
fQogCkBAIC0yNTYsMTUgKzI1NiwxNSBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGlu
ZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJj
aGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNm
RGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJl
ZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5
TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRh
YmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAg
LTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBD
RlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJ
RCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZl
IHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2
ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5n
IGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdl
YkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsK
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3Vy
Y2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyAr
MzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3Vy
Y2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFk
ZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBA
IC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5
LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBz
dWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hp
dmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFy
Y2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29s
IExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAg
ICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQg
c3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJp
bmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgp
OwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91
dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJl
c3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFy
Y2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4g
YW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1l
bnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAg
IFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lu
d2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4
JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
KCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBmMWI5MDFkZDAy
MDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43MzM2YjM3ZGUzYmRkZGE2ZmEzZGY5NjMy
ZjliNmMzMWQ0MmM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0
byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dp
dGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1J
TUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVj
b2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNv
ZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50
LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3IEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1
b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmlu
dGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgp
LCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAg
ICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZl
LCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlv
bnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdl
bmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA0ZjIyOGU4
ZDAzODliOGI4Y2I3ZjQxNDg2ZmRiNzgxYzliZjY1YmQyLi44NGFhNzJkZjE5NjAzYTE5ZmFjOGYy
ZDBkNzQyOWNmYjhkNTdlNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MiwxMCArNDIsMTQg
QEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIAogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3Rl
eHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNj
NmEwYmNmMDAwYmE5YjE3NmYuLjY2ZDNlYWM1YjVkY2M2MDFkOGUwMTY3MjcyNzY3ZTUzZmEyZjhj
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxl
U2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAg
ICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRo
ZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0
ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk5LDExICs5OSwxNSBAQCB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAg
ICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkg
OiAwKTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlm
IChkYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBv
dXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hl
Y2tOb3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAg
ICAvLyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRl
ZCBpbW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgyMzUx
ZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5mNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3
ZTQ4NGEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC02Niw4ICs2NiwxMyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYgY2xpZW50KQogCiB2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBt
X2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hl
Y2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC05MCw3ICs5NSw3IEBAIFN0cmluZyBDYWNoZWRGb250
OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gdXJsKCkuZnJh
Z21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNM
b2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAtMTAzLDkgKzEw
OCw5IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIg
YnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAt
MTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+
IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQg
PSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRh
ZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMGI3ZWQ5YmYxYzYwOTlmNTc1YWFiMzBlOTUzNDFm
MTc2ZjgxMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVhbCBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24s
IGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKICAgICBz
dGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29s
IGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBSZWZQ
dHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNhbGN1bGF0
ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0OWJkYTY5NGUwZTZm
NmI1NDIuLjcyYzE5ZjY1N2JkNDc3YzEzYTk4ZDAxZGI4MGVmYzA1NzBhZGM4OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1f
ZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAt
NTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFn
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RV
cGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50
ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RT
Y3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
KyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQog
ICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQu
LjVjMzZmOTA4Mzk2MzJmNzk5NDlmNDIyYTQ4YWI4NzNiMTI4MzQyZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZl
ZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4
Mzk1NjJmLi5jOGY1ZDJjYjZmZDJkZWRhOTE5NmU2YmM0YmQ0ZTY1MTVmOGRlNTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTY0LDI0ICs2NCwyNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAKICAgICBhdXRvIHBy
ZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwotICAgIHdoaWxlIChkYXRhLnNpemUoKSA+
IHByZXZpb3VzRGF0YVNpemUpIHsKLSAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBkYXRh
LmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YVNpemUpOworICAgIHdoaWxlIChtX2RhdGEtPnNpemUo
KSA+IHByZXZpb3VzRGF0YVNpemUpIHsKKyAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBt
X2RhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YVNpemUpOwogICAgICAgICBwcmV2aW91c0Rh
dGFTaXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1ZSk7CiAgICAg
ICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwg
aW5jcmVtZW50YWxEYXRhLnNpemUoKSk7CiAgICAgfQotICAgIHNldEVuY29kZWRTaXplKGRhdGEu
c2l6ZSgpKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVy
RGF0YSkgewogICAgICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAgICAgICBtX2xvYWRlci0+c2V0
RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEp
OwogICAgICAgICBjbGVhcigpOwogICAgIH0gZWxzZQotICAgICAgICBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGRhdGEpOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KCptX2RhdGEpOwogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRpbmcpIHsKICAgICAgICAg
YXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWxheWVkRmluaXNo
TG9hZGluZywgc3RkOjpudWxsb3B0KTsKQEAgLTEwNywxMiArMTA3LDE1IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgaWYgKGRhdGEg
IT0gbV9kYXRhLmdldCgpKQorICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXpl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgy
MDAwMTE0YTcyYTNlMmEwMTBlNzgxMDg4Li5kZmJhNzYxY2IwNTg2NGY1NDI0NTIzYmEzN2NkNTVj
NjAwNWRlZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFj
azo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAg
ICByZXR1cm47CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVw
bGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRh
ICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwot
ICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVm
ZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMy
Y2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uY2NlNTgwMWFlYzdmYzc3OGU5ZmFhODVj
MTFkNGMxNzI5NmZmZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
TG9hZGVyKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcmVzb3Vy
Y2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9S
RVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVk
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0K
QEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVk
UmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
UmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsg
Ly8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFh
NzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGU1N2Y0MDQwMzcyNGM1MzZiYTk3YjJi
NmEwNjJlY2FmNjc0NjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpCiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVh
dGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBh
cmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0
ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1
bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNp
emUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBt
ZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi45Y2Yw
NDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wg
Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3Nl
cnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQt
PnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRl
Y29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCBib29sIENh
Y2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQgfHwgIWZpcnN0Rm9u
dEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYg
KGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1fZXh0ZXJuYWxTVkdG
b250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9j
b252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29u
dmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9leHRl
cm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdGb250
RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2Li5h
MTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0
ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJuYWxTVkdGb250RWxl
bWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0ZvbnRGYWNlRWxlbWVu
dCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBt
X2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZXh0ZXJuYWxTVkdG
b250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1fc2V0dGluZ3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDU0ZTY3
NmNlNTBiMDk2YjU2MDdjM2MwMzBmN2Q5YWNjMDVjNGZhODguLmI4YjMwYjdlMDgyY2NjMThlYzUz
YjE2MGE3OGQ2ZjlhMjgwMWYyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCkBAIC05OCw4ICs5OCwxMyBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6
OnNjcmlwdEhhc2goKQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOwor
ICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi5hYjE3MTE0
NDQ3N2Q2NDVlNDE3ODUyZWM3MWYzYjI0NzE5YTJhMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBDYWNo
ZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JRAogdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7
CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNv
dXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3
OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUy
ZGE2YjExZmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjMsMTAgKzYzLDE0IEBAIFN0cmluZyBDYWNoZWRYU0xT
dHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2MWU1NjQ3NWEyMDFlODE0
Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNo
ZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBt
b25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBB
TDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hl
ZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVS
TENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAg
IERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQs
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkLi45
M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQy
LDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIg
b2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNh
Y2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBk
aXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNr
Q2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVk
UmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2Vk
U2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25z
ZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0K
IAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3
IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRC
ZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikK
K3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2Ug
PSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VS
ZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCmluZGV4IDE4MTc1MzFjYjY5OGI4YTRlZGEyODEwY2M0NjZjODE2OWNiMTYz
ZWIuLmNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgOiB1aW50OF90OwogZW51bSBjbGFz
cyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xh
c3MgRnJhbWU7CkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMo
VGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTdlMDFiNWM2
OTc2ZDY3ZjBmM2JkZmNlZGVjNmFiY2YwNDg1MmM0NC4uN2I5NjFkYjA0MDRjMWQxOTczNjA3NGU0
YTlkNmMxZGM5NDIxMjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTczLDcgKzE5NzMsNyBA
QCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQg
d2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3
aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERv
Y3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFy
ZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJT
dHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE2
NWFhODA1OGEwMzkwYjQ1MTU3OWExNDc2MWJkODY3OTQ5MzY0MzMuLjAxZTE2ZGQ5OGY0ZGYwY2Vi
MjFkZjkwOGQxZjQwYzYyNGFhZTRjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
RnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0
ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxl
SGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBk
b2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAgZm9yIChh
dXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VTZXJpYWxp
emVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNv
bnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgYSBjaGFy
c2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9uZS4KICAg
ICAgICAgUEFMOjpUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRz
KCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwot
ICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6
VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMu
YXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJs
KTsKICAgICB9CiB9CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwg
aW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jl
c291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNiMDYxYTRmZmZj
NWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRlMjlj
NDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAg
ICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAK
ICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3
MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0
cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUx
YzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkxM2E1
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVh
ZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVh
ZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0
YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
KwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxl
LmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVz
UmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGlu
Z0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMx
OGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsK
IAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51
bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAKaW5kZXggYmExNzg3MjQ3MWFlMjg2NGY3NzA4MmM0N2Q2N2YyNjNlZDVkZjk1OC4u
NTk2YWZiOGU5MTg4OGMyYWE2NzJmYzBlNWQwNmNiNjQ0OWRlZGE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RyaW5nIFBhc3RlYm9h
cmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpy
ZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxNDc2NDFkZGI2NTg4NWUzOWE4M2M2YTQ1NTU2YjFl
YWE2YjM2NWY3Li40ZTI3ODJkOWJhY2I5ZDAxOWQxMjAwMjBkZmYwMTE2ZTI1MjMyZDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYg
c3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdE
YXRhOwogY2xhc3MgRWxlbWVudDsKQEAgLTgyLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgp
OwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxl
dGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBj
bGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7
CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAg
LTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVf
RVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNo
aXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBM
QVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
OwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVu
dFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2Vu
ZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsK
QEAgLTE0Myw3ICsxNDQsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEJ1ZmZlciB7CiAgICAgU3RyaW5n
IGNvbnRlbnRPcmlnaW47CiAjZW5kaWYKICAgICBTdHJpbmcgdHlwZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OwogfTsKIAogLy8gRm9yIHJlYWRpbmcgZnJvbSB0aGUgcGFzdGVib2FyZC4KQEAgLTE2NCwxMCAr
MTY1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmly
dHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFk
UlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAg
LTE4Miw3ICsxODMsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1
YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBy
ZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRS
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3Rl
Ym9hcmQgewpAQCAtMzA4LDcgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7
CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVf
dCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMzQwLDcgKzM0
MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9y
Q29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcm
IGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApp
bmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi4yMGNkNjFlNzEx
MjEzMjFjYzQ2ZDA3NzE5OTFhYWM1YWE0NzU1ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNo
YXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJl
dHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4ob3RoZXIp
KQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04MCw3ICs4MCw3
IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBv
cmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNl
cmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAg
ICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0
cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUo
KSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRD
dXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURh
dGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9
CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92
ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3Zl
KGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25z
dAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7
CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAg
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAg
ICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6
Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwg
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEp
KQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJl
ODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uYzZjYmM3OTBjN2UwNWYzMTQ4
MjA1ZmM1YTFjYzVhNDY4M2M2ZDYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0
b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4g
cGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTYwLDE2ICs2MCwxNiBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAg
IHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2lu
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3Rv
bURhdGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZy
b21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNv
ZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAg
IFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7
CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0Owog
ICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQ
bGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBj
b25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNo
Q3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBlNzc5ZGFlYWU2
NTk1MzQxOGQ5MGMxNzUwMTJkNThmYjk2OGE1MDBjLi45YjFkNGI5NWVkZmJkZmEwNTk1NmEzOTkw
NzFhYjlmZDkxODNiOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJk
Q29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0
YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0Zv
clR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmlu
Z3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNjIsNyArNjMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0
b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCA4ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3
NTJjZmQzNDhmODRkLi5iNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAg
Ym9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZv
cm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggZWI0MWE2OGNjNWFmOTIyZTg4MmVjMjY4
ZWRiMmU5OTA1ZjQzYzI0NC4uNTI3MGM1OTg0MzU1MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAg
LTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1J
bmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJs
aWM6CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3Jt
UGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFz
IGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29u
c3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05Myw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
VVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRT
dHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0
bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IDFl
MTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIuLmExY2M3Njk1YzBhNjNlZDc4
N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNo
bWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAog
ICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDAyZWEzZWE4OWMyNmJiZTY2NTVmY2U2MDEwYjAyMDNjMGQy
ZDQxOWIuLjA1NTI2YmZkYmM4NDlkMzVlZWVlNjA0MjUxNWRmNzc1MjQxZWI3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsMzEgKzM3LDUzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCitS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworfQorCitSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsK
K30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKIFNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEp
CiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkg
fSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCkBA
IC03MywzMSArOTUsMTAgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUo
bWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBw
ZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAg
aWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAg
ICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vz
cyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQot
Ci0gICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShmaWxlUGF0aCk7
Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOwotfQotCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkp
OwotfQotCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CkBAIC0xMDgsMzAgKzEwOSwxNiBA
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
ZmZlcjo6Y29weURhdGEoKSBjb25zdApAQCAtMjA3LDEwICsxOTQsMTAgQEAgUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIAogdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5z
aXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0K
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CkBAIC0yMTgsMTkgKzIwNSwxOSBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAog
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7Cisg
ICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAg
ICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHtt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
KSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5z
aXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6
ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CkBAIC0yNDgsMTcgKzIz
NSwxMiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAg
IGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2Vk
QXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5i
ZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChj
bG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1
dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwpAQCAtMzU4LDEyICszNDAsNiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21l
bnQoKSBjb25zdAotewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBl
bmQoKSAmJiArK2l0ID09IGVuZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hh
cmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CkBAIC0zNzcsNDEgKzM1
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
ZmVyJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCkBAIC00NjEsNyAr
NDA4LDEyMyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
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
fQorCisgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShmaWxlUGF0
aCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpidWZmZXIpKTsKK30K
KworY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK1dURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgeyBkYXRhKCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2Vn
bWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAg
IGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERh
dGFTZWdtZW50OjpjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRp
ZgorCisjaWYgVVNFKEdMSUIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUo
R1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIp
CitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNl
Z21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitS
ZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVy
KSkpOworfQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7Cisg
ICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEo
KTsgfSwKKyNpZiBVU0UoQ0YpCisgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+
JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQ
dHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9
LAorI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0
YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRl
ciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsg
fQorICAgICk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRh
KTsKK30KKworYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0
YS5zaXplKCk7IH0sCkBAIC00ODAsNyArNTQzLDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShz
aXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkK
QEAgLTQ5NCwyNiArNTU3LDE2IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNp
emVfdCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c2l6ZTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBj
b25zdAotewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25z
dCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVu
dDsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJu
IGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0p
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBo
b2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOwpAQCAtNTM5LDcgKzU5Miw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhw
IC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBl
OWM4ZWQwODkyZDE1ODYxYTAwN2RiNWRjZTBmNWQ3NTQyY2ExNDhlLi43ZDg3ZDM5N2EzMmRhMTFj
YTA2MjJjMDQ1OTcwNmU5OTg5N2I4M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaApAQCAtNjIsMTQ2ICs2MiwxMzggQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBl
ZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUg
cmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhl
IGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNz
IE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBV
U0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0Uo
R0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAg
IEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2Vu
ZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsK
ICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVu
dHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHku
Ci0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5z
dGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlv
biBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQot
ICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90
PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2lt
aWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBk
YXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFy
ZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlz
IFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAvLyBBcnJheUJ1ZmZlciB3aXRo
b3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKLQotICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZv
aWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBz
dHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRh
OworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAg
Ly8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNh
dXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9k
aWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAg
IGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdt
ZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29u
c3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQot
ICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJl
Zj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5k
aWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxH
Qnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkg
eyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0jZW5kaWYK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KLQotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAg
RnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNp
emVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQot
ICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBleHBs
aWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVk
RmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVT
RShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERh
dGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2Vu
ZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwK
ICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
LSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Cisg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKIAotICAgICAgICBzdGQ6OnZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworCisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+
IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNF
KEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYg
VVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
IAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcg
YW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJl
ZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEo
KTsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgLy8gQ3JlYXRlcyBhbiBB
cnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhh
dAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBp
bnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
c2l6ZSgpOyB9CisgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRp
Z3VvdXM7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0
YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChDRkRhdGFSZWYpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAg
ICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBi
ZWdpblBvc2l0aW9uOwpAQCAtMjEwLDUzICsyMDIsMTAyIEBAIHB1YmxpYzoKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQg
dGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoKSBjb25zdDsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi1wcml2YXRl
OgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQg
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1f
c2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBh
cHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
CisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdt
ZW50KCkgY29uc3Q7Ci0KK3ByaXZhdGU6CiAgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50
cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7Ci0KKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRh
U2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRp
b24pIGNvbnN0OwogCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFT
ZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFi
bGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKKy8vIEEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJl
Y3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9k
cy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsK
K3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6
aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlv
dSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHku
CisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQu
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYm
Li4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNp
ZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9S
VCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKwogaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAo
aGFzT25lUmVmKCkpCkBAIC0yNjQsMjMgKzMwNSwyNCBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21l
bnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBu
ZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBu
ZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSAr
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0
cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7
IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25z
dCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmlu
ZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQuLjNmN2ZiYTQxYTRh
MWVmYjExY2NkZmZkNTcyNjc4Y2RmZmU1M2QwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU3RhdGljUGFz
dGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAgICAgbV9jdXN0b21EYXRhLndy
aXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDliNmRlMzFmMmVkZWJlMDE4OGRjOWM0NjZhMjcxZTFi
OGI5ZTE0Li5hMDM5YzI1MjVlZDVmZTYzNTBjY2IwYTFhYTM2NTBkMzE5ODZmNjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGljUGFzdGVib2FyZCBmaW5hbCA6IHB1
YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7
CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdy
aXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJp
bmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4
YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkx
YjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAg
LTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxh
eWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxh
cHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWlu
Z0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAg
ICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Fy
dHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpu
dW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNh
MWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9p
ZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0
Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBr
Q0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYz
OWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVm
ODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2Rl
Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNl
MzFkNWQzNDYzNDBiYjJmY2I5MS4uNjhiMDg5NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1
OTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cApAQCAtNDEsMTcgKzQxLDEzIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJl
ZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZp
Y2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNlIHRo
aXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQotUmV0
YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0
YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlmIChoYXNP
bmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMo
Y2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgIH0pOwot
ICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxw
dHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApAQCAtNzIsNyArNjgsNyBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogCiB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNC
ZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
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
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCBl
ZTdiZDRiM2ZkYmY5YjdiYzZkOGRhMGM2MzU3NzVjOTU4NWI3MTY4Li5hZDk2ZjdmNTNhMmRjYzA0
ZDI5MzIxMDJlZWQ4MTk4MGZiZmQ1MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBf
ZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBf
c2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtOTUsMjAgKzk1LDE5IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKE5TRGF0YSAqZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJp
ZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVh
dGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50
KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBAIC0xMTksNyArMTE4LDcgQEAgUmV0YWluUHRy
PE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogICAgIH0p
OwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6
ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgw
ZjM3N2UyMmI5ODM0Li42NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFy
c2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0
dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRk
MzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjM4Mjk4YTFmZWFiNWRmM2E3
M2Q1M2U1ZjcxOTU2YTJlODMyMDBmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byog
ZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGlu
aXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0
RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUo
KTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpA
QCAtMjA2LDcgKzIwNyw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgaWYgKCFrZXlJ
ZENvdW50IHx8ICFpbmRleCkKICAgICAgICAgcmV0dXJuIGtleUlkczsKIAotICAgIGF1dG8qIGRh
dGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0
RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERh
dGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDcg
KzI0Nyw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBh
IEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJr
aWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJy
YXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFp
bmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7Cisg
ICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
aW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0
YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzks
OSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9l
bmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5i
dWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1
YzQ0ZGQzNWFlZDhlMGQwLi41ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1
ZTAwOThjYjZjMDBiZjIuLmU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAg
ICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWls
ZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFy
aWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19i
eXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmlu
ZGV4IGU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUuLmNlMTM2NDk2YzRl
MTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAg
ICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAKaW5kZXggMmRiYTAxOTUyOWE3M2QzZWI0YTI0YTBmNjExMjhmN2ExODg3ODBlNC4u
ODdkNzg0YmM2NjUxOGZhYjI2YjM0NjYzYTQ2NDQwMDkzZGUyNzE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0zOCwxMiAr
MzgsMTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBi
eXRlcykKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0K
IAotR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dS
ZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25z
dAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihn
X2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0
YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
LSAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBj
b25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBi
eXRlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRl
eCA0ZTk0OWRmYWI5NzY1YTJhMDdjNDg3OGFiZWUxMDNmYmFmMjFmNTcwLi4xMjU4NjJlNzJhOWY5
ZDg2OTZjZTE2Y2FjZmY2YmY3MjA3YjQ1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50
ZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGlu
dGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllcikp
OwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3Jp
Z2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0
YWxpYykKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEgPSBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsgfSwg
d3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDc0
NDIwMDRmMDBiNWRiYTI3ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjRjNWM4YTM5NjMzYTA2NDc4
OThiNTJhMzk0NTI1ZmIxYWZiMTJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJp
bGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVu
dGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBP
cmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5
ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9u
RmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
PSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUs
IGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4Mjlk
ZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2Ug
Y3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJs
ZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQsMTMgKzIyMywxMyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
bGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNv
bnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAKaW5kZXggMmNmNDQ4YmVhMmZhNmFlNGQ0N2Y5NjQwMDJiM2E5MDZjMDEyOTA2Ny4uNjc1ZTI0
YjQwYWM3YWFkZTc0MDg2ZjI0MmVhZDAxNTIyMWMwMjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGhleChwYXJhbWV0ZXJzLmxldmVsSURDLCAyKSk7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0x
MDoyMDE0CiAgICAgLy8gNy4zLjIuMS4xIFNlcXVlbmNlIHBhcmFtZXRlciBzZXQgZGF0YSBzeW50
YXgKQEAgLTI1NSw3ICsyNTUsNyBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0
cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBjb21wYXRp
YmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRl
cnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29k
ZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8SEVWQ1Bh
cmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJD
QyYgY29kZWNDb2RlLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gSVNPL0lFQyAxNDQ5Ni0xNToyMDE0CiAgICAgLy8gOC4zLjMuMSBIRVZDIGRlY29kZXIg
Y29uZmlndXJhdGlvbiByZWNvcmQKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGQ6Om9wdGlvbmFsPERv
VmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1Zp
ZXcpCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFt
ZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlIERvVmkgQ29uZmlndXJhdGlvbiBSZWNv
cmQgaXMgY29udGFpbmVkIGluICJEb2xieSBWaXNpb24gU3RyZWFtcyBXaXRoaW4KICAgICAvLyB0
aGUgSVNPIEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQsIFZlcnNpb24gMi4wIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCmluZGV4IGFmNzVjNjJk
MTE1ODBhZDAzOGQ3MTdiZTk0YjMzMWQzOWRkZGEyN2EuLmVkZmVjYjI2ZDg5NDY3YTIzZDFmNTcx
Y2JjNWU5MWIyZmEzNDc4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmgKQEAgLTMxLDggKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvdXJDQzsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEFWQ1BhcmFtZXRlcnMgewogICAgIHVpbnQ4X3Qg
cHJvZmlsZUlEQyB7IDAgfTsKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IEFWQ1BhcmFtZXRlcnMg
ewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJz
ZUFWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0
aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFy
YW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlQVZDQ29kZWNQ
YXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmKTsKIAogc3RydWN0IEhFVkNQYXJh
bWV0ZXJzIHsKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IEhFVkNQYXJhbWV0ZXJzIHsKIH07CiAK
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Nv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0
IEZvdXJDQyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQo
Y29uc3QgRm91ckNDJiwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNyZWF0ZUhFVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgSEVWQ1Bh
cmFtZXRlcnMmKTsKIAogc3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKQEAgLTY1LDcgKzY1LDcgQEAg
c3RydWN0IERvVmlQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3KTsK
LVdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURl
Y29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZp
Z3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNyZWF0ZURvVmlDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgRG9WaVBh
cmFtZXRlcnMmKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjVhZGU3
ZWY2OWUyOWE3N2YyYjg0MDkyOWU2NGJlMGM0NGU1MTY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSks
IFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJl
ZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpN
b2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUo
V1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3Yzdm
NmI1MDM0NDNkYzYzMGQwNGUxLi45MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZh
MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEw
ICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwo
KTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAg
IGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91
cmw7CiB9OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBN
b2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAg
IGVuY29kZXIgPDwgbV91cmw7CiB9CkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxNb2RlbD4gTW9k
ZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJsKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwor
ICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKIH0KIAog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNj
MWJjYTFkYzE1NzFjNy4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2ln
bmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZz
ZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewog
ICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYg
KGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBA
QCBzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9m
ZnNldCwgdWludDMyX3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2
X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJU
X0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNp
emUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBi
b29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkK
IAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAn
d09GRicgKi8KIAotYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09G
RihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9
IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6
CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NF
UlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wg
Y29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNm
bnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9Q
QVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIs
IGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAg
ICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAx
NjA3ZTRkZTkwMmQ1ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYpOworYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1
cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBi
ZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBv
dXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50
IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8v
IElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRm
b3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQg
dG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4g
SWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0
ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMx
MTRlODI5Y2ZkYjVjNmFmNzU0YTkuLmQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3
NTA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2lu
ZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlw
dGlvblV0aWxpdGllcy5jcHAKaW5kZXggMTYxMWJhYWM0MzcwYjVmYzk4YTI5MjA3NzIzNWQ0NWUw
MmI1ZDBiYS4uZmM5YWE5OWE2OWRmYWU4OWU2NWIyYWIzYWY0ODkxNDA3Njg1ZmRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1h
dERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBhdXRvIHNhbXBs
ZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiYXZjQyIpKSk7CiAgICAgICAgICAgICBpZiAo
IXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIjsKLSAgICAg
ICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVj
b3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lv
bnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VBVkNEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlm
ICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOwpAQCAtMTIyLDcg
KzEyMiw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1w
bGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImh2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1w
bGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiaHZjMSI7Ci0gICAgICAgICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
YW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMsIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZm
ZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVy
biAiaHZjMSI7CkBAIC0xMzcsNyArMTM3LDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2Ny
aXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAg
ICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiZHZjQyIpKSk7CiAg
ICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJkdmgxIjsKLSAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBj
b25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VE
b1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7
CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJk
dmgxIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
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
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDFhNDNjN2RlZDI3NmUyYzNlNWY2
ZjQzYTM4ZjA1MTEyNzIwNmQwYTMuLmFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2Zl
MzFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8g
bnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYg
KG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGlu
dWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdp
dGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLjMy
YzVhNjY4YTE2YWU0OGVlZThjOWQzOGRiZmYxMzMwNWZkYWMwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTIxNCw5ICsy
MTQsOCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkK
IHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFt
X2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQot
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1
ZmZlcik7CiB9CiAKQEAgLTIyOCw3ICsyMjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsy
MzcsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
RGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9k
ZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7Cisg
ICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
cmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CmluZGV4IGRiNDU3YTgxZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjQ2YjA3ZmU3
MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBG
VF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKQEAgLTU0LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVkM2Q1MGMw
Ni4uMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNp
dHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBp
bmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAg
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihp
bmZvKTsKKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNp
emUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6
ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTMsNyArMjUzLDcgQEAgSW1hZ2VEZWNvZGVyQ0c6
OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm8KIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291
cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qg
dm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NzAsMTUg
KzU3MCwxNiBAQCB2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRl
IHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhl
IFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KICAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3Mg
YWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywg
ZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCiAgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIu
Z2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAg
Q0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vs
c2UKICAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgZGF0YS5yZWYoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwogICAgIC8vIFdl
IHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRC
eXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92
aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhh
dCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5n
IHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENh
bGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0
ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
RGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0
YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRhLnNpemUoKSwgJnBy
b3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlciht
X25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmVi
NzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEo
ZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwog
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpp
bmRleCA4NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiLi44NDRhYzQ0ZjNh
ZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1J
c0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBD
RkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRi
NDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1
MDVlYjUwNDBmOTlmZjhjNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
QEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNl
Z21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byog
YnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVm
Y29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVu
dCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0Yzgw
YzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1
NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApA
QCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0
YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVx
dWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEg
PSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9w
dGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLmNjZGFkYjBk
YTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0
YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAg
ICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDY4OWNiNjc5
ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIuLmZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4
MDY5N2MxMjQ2MDFkNWI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29t
cGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVl
VHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3Bl
blR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tl
ciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJl
ZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVj
dGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpa
KSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmlu
ZGV4IGNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMuLmI3NDlmYzE1OGRm
YWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6
Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkKK1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KnRoaXMpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMp
OwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1
MmUyYWQ5ZGMzODQ2OC4uMmI2MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9u
KGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkw
LDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBl
ZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1
ZjgxZTdjYThhNTA2OS4uMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTQyOCw4ICs0Mjgs
OSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rl
cjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogCiB2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9z
ID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNp
emUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0g
YnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAg
ICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBj
YmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4MWE1ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBh
Y2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2OSw3ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXRE
YXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2Fk
Q29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXls
b2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBp
bml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRh
dGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7
CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVy
ZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMy
ZDdiYzA3ZjdjMDFiOWMzLi5jYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFlYmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNv
bnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQ
YXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNv
bnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3
LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3Qg
Z2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2lu
Z1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBi
YXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1
ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5
ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBH
RXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsg
bWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQ
YXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERh
dGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBh
eWxvYWQpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2Fk
KTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUo
dW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0N2Qy
ZjEuLjdiYjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAKICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAg
ICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKKyAg
ICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkID8gcGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSkKICAg
ICB7CiAgICAgfQogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJj
ZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdp
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
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
MzY4NzIyYTM2ZjU4Y2MwZTcyYWY4NzY1NWViYWU2Y2E1ZDRiOTc4Yy4uYTdmNDUwMzIwZTkwOGM2
YTFmNWYwZjg5NTYwOTJhZTI0Nzk1YTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTI0MCwxNCArMjQwLDE0IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAg
aWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxh
dFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVt
SW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAg
ICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1
bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAg
ICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVS
VEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBr
VVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJl
c3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVm
ZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6
IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTUsNyArMjU1LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0
eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQg
IT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3Rl
Ym9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFk
ZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJS
ZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOWRiMGFiMzRiMjYxOGEwNDAyYjBk
MjQzZGM4NzA3YTM2NzgyM2RlMy4uZDlmNDhlZDFiMzQwNWQyZGVhOTc3OGMzYTZjNTcyYmM1MzJm
YjkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1h
a2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVy
biAwOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAg
ICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0
YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRU
eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ld
XTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAg
YXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3Jl
YXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0
IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50
LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9y
Om51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0
IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50
LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAg
IH0KIApAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICAgICAgaWYgKCFpc0Rl
Y2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVU
SUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5
cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdn
ZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwog
I2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFN
X0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSku
Z2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3Rv
bURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02NzIsNyArNjcyLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8
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
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggYTdmZTcyNTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2Ny4uYjQ5YWQ3YzA0
YTUyODE4MmE1MWI4YTNhOTg0ZDdkOTA0ZDYzOTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgs
MTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJk
IHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0
YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAog
aW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyAr
MjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJp
bmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9t
RGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9t
RGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXpl
ZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2lu
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQog
ICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjMsOCAr
MjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
ICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxh
dGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6
Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVO
U0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRU
eXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYsNyArNDQ2LDcg
QEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShO
U1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlm
ICghaW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNDU3LDcg
KzQ1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsCiAKICAgICBpZiAoTlNEYXRhICpkYXRh
ID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9w
dE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0Rh
dGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDcsOCAr
NTA3LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJv
YXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5
cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9y
bVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
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
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uZTU5
MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtOTE5LDcgKzkxOSw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25n
U2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAg
ICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
aW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uZDYzNWY3OWNk
MWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBz
byBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRl
bnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAg
ICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3Np
bmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQog
CkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3ND
b250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwg
bGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8g
dGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgp
LCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRh
dGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAs
IGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBj
aGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
YnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVm
ZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwg
Ym91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0g
U3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2
MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmFjZDg4ZTFiMDI5YjliMWU3ZjE0YjdkMTQwMzI5MjZi
OTMxNzVhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6
OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9p
ZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdl
MDEwZi4uZWQwNWRlN2FlZTkzMjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDksOCArMTQ5LDkgQEAgdm9pZCBD
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2Vp
dmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVE
YXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGln
dW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRy
aWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCAzMTVlMDY1MTUzMGRjZGIwMjgwMTY1
NGI3NTdkODE0NzNjMjBmZDMwLi4zNWQ1MjYxNTE3ZWY0ZjA0MzM2MWQ1ZDEwMGZkNzhkNmM4ZDA5
ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEg
KilkYXRhIGwKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBh
bnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UK
ICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hv
dyB0cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVC
dWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7Cisg
ICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAgfTsKIAog
ICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCA3MzY1ZjAx
MDk0NGE5MjZiMGViY2E5OTZiZGRhZTE0NDk1MGY2M2UzLi5mNDk4NmIwMDEwOGIxNzhmNjQ3ZTc2
ZTczNGNhMmMzZjczYzA3NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVi
b2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQg
cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsg
Kytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc4LDggKzk3
OCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+
ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnko
ZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIApAQCAtMTAzMCw4ICsxMDMwLDggQEAg
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBT
dHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhp
cyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdy
aXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAg
ICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZp
bGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAm
d3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAg
ICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4
ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1
ZDJmNTg2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
QEAgLTIxMywxMCArMjEzLDExIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNw
b25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25z
ZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZl
ci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVz
cG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzEsNyArMjcyLDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3
KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1Zp
ZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDog
RmFpbGVkKTsKIH0KQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0
b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAn
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwog
CiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQi
X3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5ZTFhNDVj
Mjk4ODU0MmIwNWU3NGI0NzE3YTc3MDU3MjhiYjYuLmU4YmMzOTc5ZjkzZjQzZGQ0ZmZlZDNiZTA1
ZTYxNzZkZDdhMzdkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc4LDExICs3OCwxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29s
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JP
Y2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShtX2RhdGEpOwogICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2Rh
dGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwotICAgICAgICAgICAg
aWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
IGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICAg
ICAgbV9kYXRhID0gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEpIHsKKyAgICAgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCmluZGV4IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLjBiY2Q5
NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShS
ZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAg
YXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihi
b2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0g
KFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBb
Jl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZj
MGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0
NWJjY2I3ODgwMmZiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBT
Y3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRv
byBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRC
dWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVN
YXBwaW5nOjpObyk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmls
ZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1Nv
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
NTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi41NzdkNjU2ZTY3ZmNjYTQ2
NDA1MGJmZDM0ZGFkYzJhMzYyNWUyMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBA
IHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VC
dWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9u
c2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li4zYTU1
MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxi
YWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250
aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQw
NjBmM2IxOWRjNTBlNmNiOGYxZWI0Li41YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0
MGU4YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25z
ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShS
ZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAg
ICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi45
NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE4Nyw3ICsxODcs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUg
PSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZk
YmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjpl
bmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAog
ICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtd
KGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxw
dHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29y
ZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0
LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAg
ICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAg
cmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2
YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0
MjgzZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6
UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBo
ZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEg
Ym9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRh
KCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9i
dWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgp
KS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9r
ZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
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
NzRjLi5lOTNmZDg5ZTdlZmMwNzZhOWI5MTg3NzdiZDYwOGM4MzQ0Yjk0YWJhIDEwMDY0NAotLS0g
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
QEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmICho
YXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURh
dGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5w
dHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9h
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
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDY0NDkxZTE2MmVjNmM1YmNmYTNmYzRjYjI0
OWY4ZDljY2I2MzliMjEuLjFiOWI1NGI2MjcxODE0OTUwOGY5MDI3YzgzYzY3MzIwNmJhODI5ODIg
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
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDRjZmQwMjlhYzg0ODNhN2MzMjFiYTU0
YjExODBjODZmYzRmZDc4YS4uM2U5MjNjZjY0OWQ5NmUzNGVkMmE1MWY5MTcwZDViMTc0MWZhNjUx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3Qg
V2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQp
CiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hp
Z2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxp
Z2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBp
bWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hs
aWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwog
CiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkK
ICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdo
bGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGln
aGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKQEAgLTIyMjMsNyArMjIyMyw3IEBAIC0gKHZvaWQpX3N0
YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKIC0gKHZvaWQpX3JlcXVl
c3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RS
ZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
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
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVh
MmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdi
OGY2ZGE1ZjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYg
KG5vRXJyICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3Ry
YXRpb25zKSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyks
IHJlZ2lzdHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdp
c3RyYXRpb25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdl
dCgpKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpD
b25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25E
YXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTEwZGE2NmFiZjY0ODcyZjkxM2Mx
MzA1M2EyZWI3ZGI3YTdmYzJjLi4xMWNjNzUyOGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEwNzQ2MmVl
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYg
KFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9w
YWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdh
Y3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAg
ICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAg
fQogICAgIH0KQEAgLTQ0NzcsNyArNDQ3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAg
ICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZp
c2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAg
ICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBA
IC00NTA4LDcgKzQ1MDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9f
YnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0K
IApAQCAtNDU2MSw3ICs0NTYxLDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVX
cmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKQEAgLTQ2MTMsNyArNDYxMyw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0
ZUFjY2Vzc0NhdGVnb3J5IHBhc3RlQWNjCiAgICAgaGlkZURPTVBhc3RlTWVudVdpdGhSZXN1bHQo
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAg
ICBOU0RhdGEgKmRhdGEgPSBbcGFzdGVib2FyZEZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNz
Q2F0ZWdvcnkpIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNv
Y29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVu
dGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJk
RGF0YShwYXN0ZWJvYXJkTmFtZUZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkp
KTsKICAgICAgICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpH
cmFudGVkRm9yR2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNDAwMGE2YjcxOTEzNWMzNDNi
NGNkMDljMDIzYTY4ZjJjNWU3ODVlLi5lYWY1ZWVhOTgyM2NjNGYyNTllYWQzZTA3ZDA5MDgzMWQ5
ZDNmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMzNSwxMCArMzM1LDEwIEBAIERvd25sb2FkUHJv
eHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxv
YWRQcm94eShkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5m
bywgb3JpZ2luYXRpbmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1
ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVz
dFJlc291cmNlKHBhZ2VJRCwgc2Vzc2lvbklELCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlKHJlcXVlc3QuaHR0cEJvZHkoKSkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9y
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDg2ZjFiMzA0NGZjODc5
ZDA5M2ZlZTk2Y2VhNmViMTBhNTM4NzY2MzQuLjcwYjU3YjU0NDUzOTI2NTNiNDI2YWQ3ODhmYjEx
MjI1Yjc5MmFkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIFNlc3Npb25J
RDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwpA
QCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICAgICBEb3dubG9hZFBy
b3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUG9v
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3Vy
Y2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYp
OwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggMTk1YzNjODIy
MDg4YTc3YmI5ZGYxNjc4NTAxMGY0MTU2YzZjYzY2MS4uZWQ5ZDgzMzdmNDc0Zjc3OGVmNzZiMTk0
YzY5MjBhMTE4NGYyYTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
NDY5LDcgKzQ2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1l
bnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNh
dmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJs
ZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4OTVlN2I4
Y2Q1YjkzOTkyNjQ5MzYxNWQ4Zjc3NTZjZjU4N2E4NjU1Li43MDdmZDJkZTdiN2FjMGIyNjJmZDBm
NzY3M2MyODlkODgyM2FiZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTYzNzcsNyArNjM3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvCiAgICAg
ZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1By
b2Nlc3MoKS5yZXF1ZXN0UmVzb3VyY2UoaWRlbnRpZmllcigpLCBzZXNzaW9uSUQoKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZjg4YmI1Yjc5ZWJjNmZhMmE5ZTg5NjU0MzMx
NGYwMjAyOGY2NWQyLi45MDIzN2FlNTVmZjkzZGU1Yjk0NzkxNjk2ZTEzOWFiMTVlMzg3MzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBA
IGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2Jz
ZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsK
IGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpAQCAtMTE4Myw3
ICsxMTgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKQEAgLTEzNzUsNyArMTM3NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CiAgICAgdm9p
ZCByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwogICAg
IHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVz
b3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJj
ZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5j
ZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQg
Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYy
MDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uZjk0ZGU5MzNmZDBjZDQzZTQ4YmJhZWU3N2YzMGFiYjY4
ZjBkYWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKGlz
U3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5j
RGF0YS0+c2l6ZSgpIH07CisgICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7
CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzYjA0YTgzM2RiZTBiNmI2NmVlMTRk
M2MzMDBmMzA2ODcxOGJmMmNmLi41YzhlM2I5MmYwODk5MmVmNGRhZDYyYjE3N2E4MmYzMTYwOGJi
YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaApAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRD
aGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lk
IHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRv
TGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGlj
eSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJ
Rm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KaW5kZXggZmFjOWU3ZmI3OGJlZTBmNjI5NDU2NzJlM2JiNzRiOWUw
NTIwZTMwZi4uYjY4NGUxYzk0ZWFjYjY3MjhiYjEzMDY4Y2I2OTUyMjcwMWZhOGY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9uSW5mb3JtYXRpb25E
aWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAgW21fY29udGVudFZp
ZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+
IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0
YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IDEyZjNhMTVhNDNiOGFjNGQxNTFmZjMwM2MzYzVmNzdkMTM1
MzBjYmUuLjk5YWVkMDM2ODhlMGU1YzYxNzQ3OTBmZGRkOGQyNTBlOWFiNzBhMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtMzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9y
V2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAogICAgICAgICBOU0Fy
cmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJv
YXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkgaW5J
dGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBhbGxDdXN0b21Q
YXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICAgICAgaWYg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5n
ZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAgICAgICAgICAgICAg
IHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY2NTAsNyArNjY1MCw3IEBAIHN0YXRpYyBCT09M
IGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSAhPSBvcmln
aW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03NjIzLDcgKzc2MjMs
NyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6OlNoYXJlRGF0YVdp
dGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFtZSA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJfVUlfU1RSSU5HKCJT
aGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVhdGVkIGZvciBhIHNo
YXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNoYXJlRGF0YS5maWxl
cyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBm
aWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQ
TkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hvd1NoYXJlU2hlZXQ6
c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGluZ1JlY3QgdG9WaWV3
OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkZDgyOTUzYjkw
ZjRmMTNiZGI4Y2E3NmM0MjhkMGMwNzJjMGM1ZGI5Li43YThmYWNkMzE3YTA2Mzk2ZDYzYjhkZWVj
NjU3MWU1NTEzZWM0OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGU0NDI3ZTJjMjBkZjFlYWNhYTQxZDAyMzU3ZTg3ZmIzYWVjMTcwZWUuLmNhNmI4NzNiMWM4
M2Y1YTUwN2I4NWVhMGZmMzFjZWRhZGQxYWFiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
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
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBk
ZjI3OGE3ODg0YmFjODlkNWQxNWY3ZGM2NDlkNjZkODA1MDRjMWY0Li5hMDEwM2IwMmEwZjRkNGE5
MWUxN2YzNTJiZjhmOWYxMDUyNWQ4Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjY1
LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5n
ZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmRE
YXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMs
IHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0YzQ4ODk3NjAxMjJh
Zjc2ZjAzYjgwYzRmODY2MmExMjNmNGQ5MTdlLi5lMTZiMGNmMzgxODA2MTEwZGJjNmUxN2ViNzVk
OTFkM2U0YjA5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2Vi
Q29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29y
ZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjk1OTIyM2Q3NzZlZjkz
MmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+
ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSA6IDApOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Uo
bWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXpl
KCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDYwYzIwN2VkMGVlYTgz
NmI0ODcwZGRhN2M2YmIzMGExNDU0Y2E0OTcuLjRjNjY2ZGQ0MGQ1ZTlkNDUxYTFlMDZjMTFmZDA4
MDAyN2E5OGIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIs
MTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhl
IG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYg
KFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXRE
YXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1
ZmZlcikpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJy
aWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2Fn
aW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkgewpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQw
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVy
KGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCAyMDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJhZTBhNjk0ODMxYjkzNmUwLi4wNDVk
NGNiODlhOTY2NGEwOGUxYjgxYTA1MzAzNWRjNWQ5ZDBjNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFs
bFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVh
ZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVlMTczMzY0
MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEy
YjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Ug
PSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBpbWFn
ZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKQEAgLTE2Myw3ICsx
NjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0
YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgo
X19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0
YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFh
cmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNi
MTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLjkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2Fj
MzEzM2I3ZTFlZTlmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgp
IGNvbnN0CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRh
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5n
KCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkp
OwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5k
ZXggZTQ2N2VmZmZkNzk0N2I3OGE0YjgwNzBkNDg4OGIwNmFmOGViN2RjNS4uMzlhYjc0OGUxMjY2
ZDU5YjdjNjIwYTc3YzMzOTgzOWVkMTIxODE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUo
KSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3Io
KS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0K
aW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2Zjkw
MzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAg
LSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1
dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6
IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjVi
NzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNmZjMuLmM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4
ZmEwMDlkY2QxZmIxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkg
ZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
IHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYzJjNDBkM2Qy
YTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMi4uNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0
NjY2OWI0MDEyYjEyNWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwg
b25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2Vi
S2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDFk
ODFmZmExOWQ5N2YwNGVjN2NjNTc1YjNlY2U1ZTg4ODE0NDBiMzkuLmUzNTFlYTk5OGMwN2U0YjMw
NDZmYzkwZDI2NDVmYWIzZTZkMGQ4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+
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
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IDE4OGVjNTAwNDUwNzdkNzhiMDEyMGE2ZGFmYmIwNGZiNzkyNzY0NjQuLmEzZTNj
OTMxNjhkODkzNjUwMmFhNmU3ZjQ1NGU0ZTU3ZWQxYjEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgog
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyAr
MTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1p
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBh
c3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
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
Lm1tCmluZGV4IGIwOGMxZDIxY2Y5ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLmQzYjUx
NmM0MWE5MGU3ZmE1N2RhZDk4OTFkNDlhMzM5MTQ4YTM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
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
X3N0cmluZ1ZhbHVlCiAgICAgICAgIGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0aW4xRW5jb2Rp
bmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAg
IHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29y
ZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEt
PnNpemUoKSA6IDApOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRj
ZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0
NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1l
bW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5
U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1l
bW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9y
eVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RG
TW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5k
ZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRh
M2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6
IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJl
YW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
IHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShf
Q09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJl
YW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3Ry
ZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAg
c2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3NjdlMGJiOWFk
MjI0NTY3ZDcyNWNkM2NkY2RiMWZmLi5iM2EyYzRjZmViM2U4ZjgyYTA1MGEzOGY1NzI1OGQ5MDZk
MDZiZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcg
KzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJl
YW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIo
Y2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIo
Y2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0
dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVm
VG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFm
MzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMz
MzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAwODdiNjllN2E4
YjBiNjg4YWNiZmU0NGU0ZGFiMWI3YmRhNTQxZjI4Li45NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIz
MTNhNWM4MDliYTY5N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxl
Y3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVu
dHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5k
ZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhk
MjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3Vy
Y2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9s
b2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5
UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSht
X2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8o
c3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09N
X091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMw
YzBmZGFiNDM0OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWVi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVz
b3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMu
Ljk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNv
dXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBX
ZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNv
dXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtu
b3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MmE1NmRjNzc3
MDM2NmQwMGM1MzM1NWRkMzMzNjRiMDM1MWY4MDc3Li5iMGEyYTdjOGZhOTc2YWY4ZGQ2YmQ3MTJl
YWVkMWMwZDA0MDcwNWZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJl
ZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMw
CisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTExICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4
Njg5My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4u
YmFhZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1NmJkNGYwNTIyYzIwMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQzLDM4
ICs0Myw0MCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXIt
PnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVY
UEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmco
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5n
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5Rmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5
KCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIGJ1ZmZlci0+Y2xlYXIo
KTsKICAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwpAQCAtODMsMTIgKzg1LDEzIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgYXV0byBjb250
aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91c0J1
ZmZlcik7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1b3Vz
QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0
YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJs
ZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBF
WFBFQ1RfRVEoJ2EnLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQpAQCAtOTYsNyArOTksNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0
RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwg
c3RybGVuKHRlc3REYXRhMikpOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CkBAIC0xMTEsNyArMTE0LDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3Iw
KSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KHZlY3RvcjApKTsKICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsK
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwpAQCAtMTUxLDE1ICsxNTQsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNv
cHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1
dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0
dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3Nl
LCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRl
c3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2Vn
bWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOworICAgIGF1dG8gY2xvbmUgPSBzaGFyZWRCdWZm
ZXItPmNvcHkoKTsKICAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgY2xvbmUtPnNpemUoKSkpOworICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGNsb25lLT5zaXplKCkpKTsKICAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OwogICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKIH0KQEAgLTE3NSwz
MCArMTc4LDMzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdi
JywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAn
aCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAg
IAorICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8
dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCiAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEp
KTsKICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7CiAgICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMykpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDAp
OwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRh
KDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBr
bCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVm
ZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwor
ICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1
dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdl
dFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCks
ICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOwor
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNr
QnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRh
dGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBr
bC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5z
aXplKCksICJhYmNkZWZnaGlqa2wiKTsKLSAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBn
aGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gy
LnNpemUoKSwgImdoIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOwor
ICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRy
KCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIApAQCAt
MjEwLDE1ICsyMTYsMTUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKICAg
ICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwogICAgICAgICByZXR1
cm4gYnVmZmVyOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVy
MS5nZXQoKSk7CiAKICAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdi
JywgJ2MnLCAnZCd9KSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAg
RVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBt
YWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywg
J2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSku
Z2V0KCkpOworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9
LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2Qn
IH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0p
LmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2En
IH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdl
dCgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uODcy
OTAzNDViNDJmMTBjOWIyZjIzODNjZmJjNGMzOWY4ZGE2YzMxNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBA
IC02Miw3ICs2Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRh
dGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFX
aXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>